从Main Form调用方法到另一个类

时间:2018-08-27 11:16:06

标签: c# winforms methods

我知道之前已经有人问过这个问题,但是我找不到正确的解决方案。

我在winform项目中工作,我需要从主窗体调用方法到另一个类。

  

我的代码:

public void checkBox1_CheckedChanged(object sender, EventArgs e)
{
  if (checkBox1.Checked)
   {
     Thread.Sleep(2000);         
   }    
}

我想在另一个类中调用此方法,以便仅在启用复选框后才会进行睡眠。

很抱歉给您带来混乱,如果您需要更多,请问。

2 个答案:

答案 0 :(得分:1)

解决此问题的另一种方法是制作一个名为Settings的公共静态类,并让复选框在其中写入一个值。然后可以轻松地从另一个类中读取此静态类。
同样很容易在此Settings类中添加更多内容

public static class Settings
{ 
    private static bool _checkChanged;

    public static CheckChanged
    {
         get { return _checkChanged; }
         set { _checkChanged = value; }
    }
}


public void checkBox1_CheckedChanged(object sender, EventArgs e)
{
     Settings.CheckChanged = checkBox1.Checked;
}

然后从另一个班级做

if (Settings.CheckChanged)
{
    // do here whatever it takes...
}

答案 1 :(得分:0)

如果我的理解正确,那么您需要知道是否已从另一个班级选中了该复选框。有多种方法可以实现。

  1. 在初始化另一个类时将对引用的引用传递给该复选框。您使用类似MyClass foo = new MyClass(...);的类来创建类。只需将复选框传递给类构造函数:MyClass foo = new MyClass(checkBox1, ...)

  2. 将复选框显示为静态。您不应该这样做,因为这样做不是一个好主意,并且如果您需要这样做,则您的应用程序设计不佳。但是,如果需要...将public static CheckBox checkbox;添加到表单中,并在表单的构造函数中添加checkbox = checkBox1;。然后,您可以使用<YourForm>.checkbox访问该复选框。

  3. 使用Fildor建议的App Settings。这可能是最好的方法,但是如果您没有经验,可能会很难做到。

一定会找到有关如何设计WinForms应用程序的教程或指南,否则一旦开始做一些大的事情,就会遇到问题。如果您不熟悉WinForms,请考虑使用WPF,它基本上是现代WinForms。 WinForms是过时的技术,不再开发。

相关问题