0

我试图从不同的类调用一个方法,但没有成功。

我的程序中有一个CheckBoxcheckBox1,我有一个按钮,当我单击它时,我想取消选中 checkBox1。

如果我像这样将 I 方法放在同一个文件中,则一切正常:

public void close()
{
  checkBox1.IsChecked=false;
}

但是,如果我创建一个单独的类文件(Close 类),并将其放在那里(在同一个命名空间中,并“使用”所需的元素)。没有办法让它工作。我试图将类实例化为:

 Close operation = new Close();
 operation.close();

我还尝试将 close 方法设置为静态,但我是不可能的,因为在我的真实程序中我有很多变量给我一个错误,因为它们是“非静态的”(?)。

我注意到MessageBox.Show("Hello");如果我以这种方式调用该方法,a 可以工作,但 checkBox1 仍然不变。我能做些什么?

4

2 回答 2

2

面向对象编程的一个基本原则是封装。这意味着一个类只知道和操作类的内部成员变量。

在您的情况下,该类Close不知道任何命名的控制变量checkBox1,因此该方法close(如上所述)无法运行。它甚至无法编译!相反,当该方法close是 Window 类的一部分时,它会按预期工作,因为控制变量checkbox1是 window 类的成员变量

但是,如果我理解您的意图,我建议您避免创建单独的类来处理用户界面操作。让处理 UI 元素的代码留在定义元素的类中。

于 2013-05-16T21:41:22.287 回答
-1

CheckBox.IsChecked返回 type 的值,bool如果您尝试实际更改复选框的值(即选中或未选中),则需要使用不同的属性。

尝试:

    public void close()
    {
        checkBox1.Checked = true;
    }

这是假设Close该类CheckBox内部确实有一个控件...您的问题相当模糊,坦率地说,将方法命名为 close 可能不是最佳实践,因为这.Close()是 WinForms 中许多类的相当常见的方法。

于 2013-05-16T21:45:05.607 回答