この回答を読みました。ボタンコントロールからクリックイベントを削除する方法を教えてください。コード (特にその部分) を変更する方法を知りたいGetField("EventClick"...
ので、他のコントロールでも同じことができます。たとえば、 のTextChanged
イベントを削除したいとしTextBox
ます。また、イベント ハンドラーを再アタッチする方法も知りたいです。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
if (textBox1.Text.Length < 10) return;
MessageBox.Show("do something");
}
private void Form1_Load(object sender, EventArgs e)
{
Tools.mkTextBoxWithPlaceholder(textBox1, "hi, input here...");
}
}
class Tools
{
public static void mkTextBoxWithPlaceholder(TextBox tb, string placeholder)
{
tb.Tag = placeholder;
tb.GotFocus += new EventHandler(tb_GotFocus);
tb.LostFocus += new EventHandler(tb_LostFocus);
}
private static void tb_GotFocus(object sender, EventArgs e)
{
TextBox tb = sender as TextBox;
tb.Clear();
}
private static void tb_LostFocus(object sender, EventArgs e)
{
TextBox tb = sender as TextBox;
//TODO Remove the TextChanged event handler here.
tb.Text = tb.Tag as string;
//TODO Reattach the TextChanged event handler here.
}
}
上記のコードでは、textBox1 に placeholder のような機能が追加されます。プレースホルダーをテキスト ボックスに追加する方法を教えてください。それが私が欲しいものです。