5

多くのラベルとテキスト ボックスを含むフォームがあります。いずれかのフィールドが変更された場合、タイトルを赤く強調表示したいと思います。これを行う簡単な方法はありますか、それともイベント コールバックを各フォーム オブジェクトに個別に追加する必要がありますか? ありがとう!

4

4 に答える 4

1

私の頭の上から、イベントを追加するためにフォームロードイベントでこのようなことをすることができます...

foreach (var control in this.Controls)
{
    if (control is Label)
    {
        ((Label)control).TextChanged += Controls_TextChanged;
    }
    else if (control is TextBox)
    {
        ((TextBox)control).TextChanged += Controls_TextChanged;
    }
}
于 2013-06-21T03:47:08.060 に答える
0

はい、同じイベントにコントロールを簡単に追加できます。この例では、「ラベル」と「テキスト ボックス」を同じイベントに配置します。

private void Form1_Load(object sender, EventArgs e)
    {
 foreach (Control x in this.Controls)
            {
                if(x is Label)
                    ((Label)x).MouseHover+=new EventHandler(AllLabels_HoverEvent);
                    else if(x is TextBox)
                    ((TextBox)x).MouseHover+=new EventHandler(AllTextboxes_HoverEvent);
            }
}

void AllLabels_HoverEvent(object sender, EventArgs e)
        {
              Label label = (Label)sender;
           // label.dowhateveryouwant...
        }
        void AllTextboxes_HoverEvent(object sender, EventArgs e)
        {
            Textbox textbox = (Textbox)sender;
           // textbox.dowhateveryouwant...
        }

さらに明確にする必要がある場合は、以下にコメントしてください。回答に追加するか、特定のニーズに合わせて変更します。ただし、コントロールが他のコンテナーにネストされている場合、それらは .xml には含まれないことに注意してくださいthis.Controls

于 2013-06-21T03:49:55.633 に答える
0

各コントロールに関連付けられたイベントを見ていると、フォームにコード化されたすべてのイベントのリストを「ドロップダウン」できることがわかります。たとえば、「Text Changed」イベントをダブルクリックすると、 になりますcontrolname_textchanged(...)。ただし、すべての汎用ハンドラーがある場合は、それを呼び出すことができますtextchangedevent(...)。汎用イベント ハンドラーには、パラメーター内のそのイベントに関連付けられた送信者とイベント オブジェクトが必要です。

ユーザー コントロールでこれを行っていて、メイン フォームを更新する必要がある場合は、これを を通じてバブルアップし、public event eventobject youreventnameそのイベントをメイン フォームにバインドします。

于 2013-06-21T03:40:28.113 に答える
0

このようなものが動作するはずです:

foreach (System.Windows.Forms.Control cont in this.Controls)
            cont.Validating += new System.Windows.Forms.ValidationEventHandler(this.Control_Validating_Method)

次に、イベント コードでコントロール タイプをテストし、その値を元の値と比較できます。

于 2013-06-21T03:41:30.523 に答える