我在UserControl内放置了一个按钮,并将此UserControl放入了表单。 我希望单击按钮时可以更新表单中的文本框文本。
public partial class UserControl1 : UserControl
{
public UserControl1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form1 form1 = new Form1();
form1.textBox1.Text = "1";
//The textbox text is not updated!
}
}
文本框文本未更新
答案 0 :(得分:1)
您正在创建一个新的Form1
。您没有显示它。您可能打算更新现有的Form1
。我想将UserControl1
放在Form1
上。然后,您可以执行以下操作:
private void button1_Click(object sender, EventArgs e)
{
// Get the parent form
Form1 myForm = (Form1) this.parent;
myForm.TextBox1.Text = "1";
}
如果您的UserControl1
不在Form1
上,则您需要以某种方式传递参考。
答案 1 :(得分:0)
删除创建新表单的行
public partial class UserControl1 : UserControl
{
public UserControl1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
textBox1.Text = "1";
//The textbox text is not updated!
}
}
答案 2 :(得分:0)
请勿创建新表单。请删除该行。
我猜您正在尝试为Form中的TextBox设置文本,并且您的按钮位于UserControl中,该控件是Form的子组件。
如果是这样,请从您的Form中注册一个EventHandler并从UserControl中的Button中触发事件。
在您的UserControl中注册一个EventHandler:
public event EventHandler ButtonClicked;
protected virtual void OnButtonClicked(EventArgs e)
{
var handler = ButtonClicked;
if (handler != null)
handler(this, e);
}
private void Button_Click(object sender, EventArgs e)
{
OnButtonClicked(e);
}
在您的表单中,您从UserControl订阅了该事件:
this.userControl1.ButtonClicked += userControl11_ButtonClicked;
private void userControl11_ButtonClicked(object sender, EventArgs e)
{
this.TextBox1.Text = "1";
}
让我知道你的结果。