我有两个表单,UserInterface
和Client
我正在将checkbox2.Checked
信息传递给Client
,但它只有在启动时才有效。当我勾选或取消勾选并关闭并重新打开Client
时,它不会注意到这一变化。
Modifiers
已checkbox2
以UserInterface
格式公开。
以下是Client
代码:
public partial class Client : Form
{
private UserInterface ui1;
public Client()
{
InitializeComponent();
}
public void CheckBoxCheck()
{
if (ui1.checkBox2.Checked == true)
{
MessageBox.Show("true");
}
else
{
MessageBox.Show("false");
}
}
}
如果在启动时勾选复选框Client
将显示“true”,但如果我点击它(取消勾选)并运行Client
,它仍会显示“true”。
我需要添加或修改什么,以便checkbox2实时更新。谢谢。
注意:我对编码很新,感谢解释。
答案 0 :(得分:1)
您的表格应该已连接。看起来ui1是UserInterface形式的另一个实例。
在表单之间传递数据有不同的方法,这取决于您的需求。
例如,您可以在Client中创建UserInterface表单。并使用Show()方法来显示它。
答案 1 :(得分:1)
您可能应该使用UserInterface类中的Checkbox.Checked事件,然后触发客户端可以订阅的自定义事件。
public event EventHandler<EventArgs> CheckboxCheckedChanged;
protected void OnCheckboxCheckedChanged(EventArgs e)
{
if (CheckboxCheckedChanged != null)
CheckboxCheckedChanged(this, e);
}
private void checkbox2_CheckedChanged(object sender, EventArgs e)
{
OnCheckboxCheckedChanged(e);
}
然后在客户端:
ui1.CheckboxCheckedChanged += ui1_CheckboxCheckedChanged;
private void ui1_CheckboxCheckedChanged(object sender, CheckBoxEventArgs e)
{
// Your code here
}
答案 2 :(得分:1)
我将以noMad17的答案为基础,您必须在UserInterface表单中订阅CheckBox事件。但是变化是现在我们将发送在事件中单击的CheckBox。因此,此代码适用于您的UserInterface表单:
public event EventHandler SomeEvent;
protected void OnSomeEvent(object sender, EventArgs e)
{
EventHandler eh = SomeEvent;
if(eh != null)
{
eh(sender, e);
}
}
private void checkBox2_CheckedChanged(object sender, EventArgs e)
{
OnSomeEvent(sender, e);
}
现在对于Client,它需要知道UserInterface是什么,所以我们必须在构造函数中将UserInterface传递给Client,否则它不会初始化。在这里,我们将解决父窗体将给我们的CheckBox事件。最后,我们必须取消订阅该活动。所以此代码适用于您的客户:
public partial class Client : Form
{
private UserInterface ui1;
public Client(UserInterface ui1)
{
InitializeComponent();
this.ui1 = ui1;
ui1.SomeEvent += UI1_SomeEvent;
}
private void UI1_SomeEvent(object sender, EventArgs e)
{
//Your code...
CheckBox c = sender as CheckBox;
if(c.Checked == true)
{
MessageBox.Show("true");
}
else
{
MessageBox.Show("false");
}
}
private void Client_FormClosing(object sender, FormClosingEventArgs e)
{
ui1.SomeEvent -= UI1_SomeEvent;
}
}