bool作为CheckBox的数据源(Bool更新在另一个线程中,而不是它正在影响的线程)

Oth*_*har 6 c# checkbox visual-studio-2010 .net-3.5 winforms

我试图找到如何将bool分配给复选框.我想在我的bool数据发生变化时自动刷新checkbox.checked值.我知道对于ComboBox,有一个DataSource属性,它使用一个列表,但我无法找到与复选框等效的.

我尝试使用checkBox.DataBindings,但它似乎不起作用.另一方面,我真的不知道第三个属性是什么意思.

checkBox.DataBindings.Add("Checked", DisableBugWatcher, "check");
Run Code Online (Sandbox Code Playgroud)

我需要它,因为我有两个独立的窗口刷新相同的复选框值!

编辑:

我尝试使用Event更新我的主GUI,但它说:跨线程操作无效:控制'checkBox'从一个线程访问,而不是创建它的线程.

问题是这样一个事实,即bool值是从另一个线程刷新而不是它影响的线程.

Oth*_*har 1

我与朋友一起找到更简单的方法来解决我的问题。我使用表单中的 DialogResult。当我从表单返回时,它会提供按钮单击的状态,并提供文本框的值。相同的代码适用于我的复选框问题。

这是代码示例:

public partial class MainWindow : Form
{

    private OtherWindow m_otherWindow;

    public MainWindow()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        // Lazy create other window if it doesn't exist.
        m_otherWindow = m_otherWindow ?? new OtherWindow();

        // Passe textbox value to other window.
        m_otherWindow.PassedValue=textBox1.Text;
        if (m_otherWindow.ShowDialog()==DialogResult.OK)
        {
            // Clicked ok : update textbox value with textbox value of other window.
            textBox1.Text=m_otherWindow.PassedValue;
        }
    }

    private void button2_Click(object sender, EventArgs e)
    {
        Close();
    }
}

public partial class OtherWindow : Form
{

    /// <summary>
    /// Value to be passed to the window.
    /// </summary>
    public string PassedValue
    {
        get { return textBox1.Text; }
        set { textBox1.Text = value; }
    }

    public OtherWindow()
    {
        InitializeComponent();
    }

    private void button2_Click(object sender, EventArgs e)
    {
        DialogResult = DialogResult.OK;
    }
}
Run Code Online (Sandbox Code Playgroud)