首页 > 解决方案 > 如何查看是否在另一个表单上选中了复选框?

问题描述

我向我的朋友们开始了一个关于 gui 的项目,但我不知道如何从另一种形式中读取布尔值。这是我的代码的那一部分。我对编码真的很陌生,所以我真的建议(正在阅读这篇文章的人)问一个我应该解释更多的问题。这段代码不起作用,但我不知道为什么。我做了一个名为 s 的新设置,然后我尝试从设置中读取一个布尔值,但它不起作用。

// main form
 private void checkBox5_CheckedChanged(object sender, EventArgs e)
    {
        Settings s = new Settings();          
        {
            if(s.checkBox2.Checked)
            {
                Opacity = 0.9; //For an example

            }              
        }


// Settings form
private void checkBox2_CheckedChanged(object sender, EventArgs e)
    {

    }

标签: c#winforms

解决方案


您可以做的一件事是创建一个公共只读属性,该属性反映Settings表单上复选框的值:

public partial class Settings : Form
{
    // This is a read-only property providing access to the Checked propery of a checkbox
    public bool CheckBoxIsChecked => checkBox2.Checked;

    // Rest of form code omitted...
}

然后,当您Settings从表单实例化Main表单时,您可以访问该属性。

当您想要显示表单时,从您的示例中不清楚Settings,但这是一个以模态方式显示的示例(用户必须关闭它才能返回Main表单),并且复选框的值被捕获:

public partial class MainForm : Form
{
    private void checkBox5_CheckedChanged(object sender, EventArgs e)
    {
        Settings settings = new Settings();
        settings.ShowDialog();

        // Here we can get the checked state of the checkbox on the Settings form
        if (settings.CheckBoxIsChecked)
        {
            Opacity = 0.9;
        }
    }

    // Rest of form code omitted...
}

推荐阅读