4

複雑な Winform があります。複雑さを軽減するために多くのタブを使用していますが、解決方法がわからない小さな問題があります。

「Example.cs」という名前の winform 画面があるとします。画面上に多くのタブがあります。各タブには、「F2 - 保存」というボタンがあります。ユーザーが F2 ボタンを押すと、以下をキャプチャして実行します

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
    if (keyData == (Keys.F2))
    {
        btn_save.PerformClick();
        return true;
    }
    return base.ProcessCmdKey(ref msg, keyData);
}

同じWinFormに多くの「保存ボタン」があるため、ユーザーがトリガーしようとしているボタンのクリックイベントを見つけるにはどうすればよいですか?

ありがとう。

4

1 に答える 1

3

にタブ付きドキュメントのセットがある場合、TabControlこれはすべてのタブに保存ボタンが必要という意味ではありません。ここでは、保存ボタンが 1 つあり、保存ボタンのクリック時に現在アクティブなタブをピックアップする必要があります。その後、そのタブから保存する必要があるオブジェクトを選択できます。次のようなプロパティを使用して、アクティブなタブからアクティブなコントロールを取得できます

public SomeControlToSave ActiveControl
{
    get
    {
        if (tabControl.TabPages.Count == 0)
            return null;
        return tabControl.SelectedTab.Controls.OfType<SomeControlToSave>().FirstOrDefault();
    }
}

また、作業を行うためにクリック イベントをシミュレートしないでください。必要なジョブを実行するメソッドを作成し、それをコード ビハインドから呼び出します。イベント ハンドラー内でもそのメソッドを使用する必要があります。

これが役立つことを願っています。

于 2013-07-15T09:06:20.480 に答える