在单独的类文件中创建操作的方法

时间:2013-05-16 21:32:30

标签: c# wpf class methods

我正在尝试从不同的类调用一个方法但没有成功。

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

如果我将I方法放在同一个文件中,那么一切正常:

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

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

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

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

我注意到如果我以这种方式调用方法,MessageBox.Show("Hello");有效,但checkBox1仍未更改。我该怎么办?

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:-1)

CheckBox.IsChecked返回类型为bool的值,如果您尝试实际更改复选框的值(即选中或未选中),则需要使用其他属性。< / p>

尝试:

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

这假设Close类确实在其中有一个CheckBox控件...你的问题相当模糊,坦率地命名一个方法close可能不是最好的做法{{ 1}}是WinForms中许多类的一种相当常见的方法。