2012-10-31 1 views
0

리플렉션을 통해 얻으려면 printpreviewdialog의 도구 모음의 올바른 이름을 알고 싶습니다. 나는 Windows XP, Vista 및 7에서 사용할 올바른 이름을 알고 싶습니다. 그 이름이 Windows 버전인지 여부는 알 수 없습니다. 현재 나는 (내가 toolStrip1로 말하는거다)하고있는 중이 야 :C# - PrintPreviewDialog : 리플렉션을 통해 얻는 도구 모음의 이름은 무엇입니까

Type type = typeof(this); 
    FieldInfo toolStripBar = type.GetField("toolStrip1", BindingFlags.Instance | BindingFlags.NonPublic); 
    FieldInfo printToolStripButton = type.GetField("printToolStripButton", BindingFlags.Instance | BindingFlags.NonPublic); 
    ToolStrip toolStrip1 = (ToolStrip)toolStripBar.GetValue(this); 
    ToolStripButton printButton = (ToolStripButton)printToolStripButton.GetValue(this); 
    Bitmap bitmap = new Bitmap(MyBmpImage); 
    printButton.Image = bitmap; 

항상 indenpendently Windows 버전의 작업 toolStrip1 이름인가?

답변

1

클래스의 전용 변수에서 파기하고 있습니다. 그 보증을 무효로, Microsoft는 클래스를 변경하기로 결정할 수 있으며 그 코드를 깰 것입니다.

그렇지만 "toolStrip1"이라고하며 .NET 버전 2.0 이후이 이름을 사용했을 가능성이 있습니다. Winforms가 유지 관리 모드에 있으며 심각한 보안 문제와 운영 체제 호환성 문제 만 수정된다는 점에서이 이름을 변경할 수있는 가능성은 거의 없습니다.

전혀 불편한 점이 있다면 주저하지 말고 직접 미리보기 대화 상자를 구현하십시오. 아주 적다. 무거워지는 것은 PrintPreviewControl 클래스에 의해 수행된다. 힌트는 Reference Source에서 확인할 수 있습니다.