使用 属性 将单选按钮的值传递给另一个表单

Pass the value of radio button to another form using property

如果你们在将问题标记为重复之前阅读整个问题,我将不胜感激。

我试图将单选按钮的值从一个 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();

       
    }

还有两个属性,每个单选按钮一个,假设 return 布尔值如果单选按钮被选中则为真,否则为假。

 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();
    }

我想根据选中的单选按钮得到一真一假。但它不会发生。这两个属性 return false。我基本不明白为什么。

因此,当您初始化 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();
        }

只需将 this 传递给 ShowDialog(),将 Form1 设置为 Form2 的所有者:

Form2 callForm2 = new Form2();
callForm2.ShowDialog(this); // set Form1 as the OWNER

然后,在 Form2 中,您可以 CAST .Owner 回到 Form1 并按预期使用它:

private void btnGetValues_Click(object sender, EventArgs e)
{
    Form1 initialize = (Form1)this.Owner;
    label3.Text = initialize.CapitalCheck.ToString() + " " + initialize.SmallCheck.ToString();
}