2

いくつかのボタンを備えたツールストリップ メニューがあり、メニューはツールストリップ コンテナーにあります。私が達成しようとしているのは、特定のツールストリップボタンの場所で正確に新しいフォームを開くことです...これは私のコードです。ツールストリップ メニューをツールストリップ コンテナーの下部または右側に移動しない限り、機能します...

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();
    }
4

1 に答える 1

2

rbRunMacro画面全体に対するの位置を取得する必要があります (リンクを参照)。

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

私たちが使用する理由は、メソッドを提供しToolStrip.PointToScreenToolStripButtonいないためです。PointToScreenしたがって、親コントロールに対する相対的なToolStripButton.Location位置を取得するために使用する必要があります (リンクを参照)。rbRunMacro

于 2013-12-22T11:36:04.990 に答える