如果你们在标记为重复之前阅读整个问题,我将不胜感激。
我尝试将单选按钮的值从一个winform传递到另一个winform。这看起来很简单,但我还不能理解。在Form1中,我有两个名为radioCapital、radioSmall的单选按钮控件和一个名为btnInitialize的按钮。隐藏btnInitialize的代码如下所示:
public void btnInitialize_Click(object sender, EventArgs e)
{
if (radioSmall.Checked)
{
radioSmall.Checked = true;
}
if (radioCapital.Checked)
{
radioCapital.Checked = true;
}
Form2 callForm2 = new Form2();
callForm2.ShowDialog();
}和两个属性,每个单选按钮对应一个属性,如果选中单选按钮,则返回布尔值true;如果未选中,则返回布尔值false。
public bool CapitalCheck
{
get
{
return this.radioCapital.Checked;
}
}
public bool SmallCheck
{
get
{
return this.radioSmall.Checked;
}
}现在,在第二种形式,即Form2中,我试图访问属性并将它们的值发布到一个标记控件中。
private void btnGetValues_Click(object sender, EventArgs e)
{
Form1 initialize = new Form1();
label3.Text = initialize.CapitalCheck.ToString() + " " + initialize.SmallCheck.ToString();
}根据选中的单选按钮,我假设得到一个true和一个false。但这并没有发生。这两个属性都返回false。我基本上不明白为什么。
发布于 2020-07-03 04:00:40
只需通过将this传递给ShowDialog()来将Form1设置为Form2的所有者
Form2 callForm2 = new Form2();
callForm2.ShowDialog(this); // set Form1 as the OWNER然后,在Form2中,您可以将.Owner转换回Form1并按预期使用它:
private void btnGetValues_Click(object sender, EventArgs e)
{
Form1 initialize = (Form1)this.Owner;
label3.Text = initialize.CapitalCheck.ToString() + " " + initialize.SmallCheck.ToString();
}发布于 2020-07-03 03:55:34
所以,当你初始化Form2的时候,你可以直接在构造函数中传递它。示例代码:
private void button1_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2(checkBox1.Checked);
frm2.Show();
}
public Form2(bool value)
{
InitializeComponent();
label1.Text = value.ToString();
}https://stackoverflow.com/questions/62703772
复制相似问题