[C#] Windows 포맷 응용 프로그램으로 Word와 화면을 분할할 때 까다로운 화제 - Microsoft.Office.Interop.Word
9426 단어 WindowsFormVisualBasicC#Word
프로그래밍 경험이 얕은 사람뿐만 아니라 베테랑도 빠질 가능성이 있으니 참고가 됐으면 좋겠다.
화면 분할 이미지(이상)
화면에 메인 창 크기와 같은 크기의 Word를 배열합니다.
화면 분할 이미지(현실)
Word의 크기는 메인 창보다 크고 시작 위치가 크며 오른쪽으로 이동하여 화면을 초과합니다.
까닭
다음 속성은 px 단위가 아니라point 단위입니다.
- objWord.ActiveWindow.Top
- objWord.ActiveWindow.Left
- objWord.ActiveWindow.Width
- objWord.ActiveWindow.Height
px 단위로point 단위를 지정하면 예상보다 크기가 큽니다.
그래서 objWordComs는ActiveWindow.Left에서 설정한 값 위에서 오른쪽으로 설정해서 시작합니다. 화면에서 초과됩니다.
말하지 않아도 안다.ActiveWindow.하이트도 예상보다 크기가 클 것이다.
소스 코드
Rectangle rectangle = Screen.GetWorkingArea(this.FindForm());
this.FindForm().SetBounds(0, 0, this.FindForm().Width, rectangle.Height, BoundsSpecified.All);
Microsoft.Office.Interop.Word.Application objWordComs = new Microsoft.Office.Interop.Word.Application();
objWord.Documents.Open(filePath);
objWord.ActiveWindow.WindowState = Microsoft.Office.Interop.Word.WdWindowState.wdWindowStateNormal;
objWord.ActiveWindow.Top = 0;
objWord.ActiveWindow.Left = Convert.ToInt32(this.FindForm().Width);
objWord.ActiveWindow.Width = Convert.ToInt32((rect.Width - this.FindForm().Width) / 2);
objWord.ActiveWindow.Height = Convert.ToInt32(rect.Height);
해결책다음 속성의 값을 설정할 때는 PixelsToPoint 방법을 사용한 다음 설정합니다.
- objWord.ActiveWindow.Top
- objWord.ActiveWindow.Left
- objWord.ActiveWindow.Width
- objWord.ActiveWindow.Height
소스 코드
Rectangle rectangle = Screen.GetWorkingArea(this.FindForm());
this.FindForm().SetBounds(0, 0, this.FindForm().Width, rectangle.Height, BoundsSpecified.All);
Microsoft.Office.Interop.Word.Application objWord = new Microsoft.Office.Interop.Word.Application();
objWord.Documents.Open(filePath);
objWord.ActiveWindow.WindowState = Microsoft.Office.Interop.Word.WdWindowState.wdWindowStateNormal;
objWord.ActiveWindow.Top = 0;
objWord.ActiveWindow.Left = Convert.ToInt32(objWord.PixelsToPoints(this.FindForm().Width));
objWord.ActiveWindow.Width = Convert.ToInt32(objWord.PixelsToPoints((rect.Width - this.FindForm().Width) / 2));
objWord.ActiveWindow.Height = Convert.ToInt32(objWord.PixelsToPoints(rect.Height));
Reference
이 문제에 관하여([C#] Windows 포맷 응용 프로그램으로 Word와 화면을 분할할 때 까다로운 화제 - Microsoft.Office.Interop.Word), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kei_f/items/9a113d7dff6e38ab67d4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)