2013-12-22 2 views
2

일부 툴팁 툴팁 메뉴가 있습니다. 메뉴는 툴 스트립 컨테이너에 있습니다. 내가 성취하고자하는 것은 특정 toolstripbutton 위치에서 정확히 새로운 양식을 여는 것입니다 ... 이것은 제 코드입니다. 내가 ToolStrip에 컨테이너의 하단이나 오른쪽에 메뉴를 ToolStrip에 이동하지 않는 한 그것은툴팁 버튼 위치에서 폼을 여는 방법

private System.Windows.Forms.ToolStripButton rbRunMacro; 
private System.Windows.Forms.ToolStrip tsMacroRecorder; 

     private void rbRunMacro_Click(object sender, EventArgs e) 
    { 
     Rectangle rect = this.rbRunMacro.Bounds; 
     Point location = PointToScreen (new Point(this.tsMacroRecorder.Location.X + rect.X, this.tsMacroRecorder.Location.Y + rect.Y)); 
     MacroListForm form = new MacroListForm(); 
     form.StartPosition = FormStartPosition.Manual; 
     form.Location = location ; 
     form.Show(); 
    } 

답변

2

당신은 (link 참조) 전체 화면으로 rbRunMacro의 위치를 ​​얻어야한다 ... 작동합니다. 우리가 ToolStrip.PointToScreen를 사용

form.Location = this.tsMacroRecorder.PointToScreen(rbRunMacro.Bounds.Location); 

이유는 ToolStripButtonPointToScreen 방법을 제공하지 않는다는 것입니다. 따라서 ToolStripButton.Location을 사용하여 부모 컨트롤을 기준으로 rbRunMacro의 위치를 ​​가져야합니다 (link 참조).

+1

감사합니다. toolstripbutton은 PointToScreen 메소드를 허용하지 않으므로 toolstrip을 참조해야합니다. – Adlorem

+0

수정 됨, 편집을 참조하십시오. – Spookbuster