如何在动态“文本框”上创建事件
本文关键字:文本框 创建 事件 文本 动态 | 更新日期: 2023-09-27 18:01:39
我设法创建textboxes
,在运行时创建的每个按钮单击。我想从textboxes
的文本消失,当我点击它们。我知道如何创建事件,但不是动态创建的文本框。
我如何将它连接到我的新文本框?
private void buttonClear_Text(object sender, EventArgs e)
{
myText.Text = "";
}
为每个新创建的文本框分配事件处理程序:
myTextbox.Click += new System.EventHandler(buttonClear_Text);
这里的sender参数应该是发送偶数的文本框,您需要将其强制转换为正确的控件类型并将文本设置为normal
if (sender is TextBox) {
((TextBox)sender).Text = "";
}
将事件注册到文本框
myText.Click += new System.EventHandler(buttonClear_Text);
你的问题不是很清楚,但我怀疑你只需要使用sender
参数:
private void buttonClear_Text(object sender, EventArgs e)
{
TextBox textBox = (TextBox) sender;
textBox.Text = "";
}
(方法的名称在这里不是特别清楚,但由于问题也不是很清楚,我无法提出一个更好的…)
创建textBoxObj:
RoutedEventHandler reh = new RoutedEventHandler(buttonClear_Text);
textBoxObj.Click += reh;
,我认为(不是100%确定)你必须将侦听器更改为
private void buttonClear_Text(object sender, RoutedEventArgs e)
{
...
}
我猜OP想从创建的textBoxes
中清除所有文本
private void buttonClear_Text(object sender, EventArgs e)
{
ClearSpace(this);
}
public static void ClearSpace(Control control)
{
foreach (var c in control.Controls.OfType<TextBox>())
{
(c).Clear();
if (c.HasChildren)
ClearSpace(c);
}
}
这应该可以完成工作:
private void button2_Click(object sender, EventArgs e)
{
Button btn = new Button();
this.Controls.Add(btn);
// adtionally set the button location & position
//register the click handler
btn.Click += OnClickOfDynamicButton;
}
private void OnClickOfDynamicButton(object sender, EventArgs eventArgs)
{
//since you dont not need to know which of the created button is click, you just need the text to be ""
((Button) sender).Text = string.Empty;
}