簡體   English   中英

從主窗體調用方法到另一個類

[英]Call method from Main Form to another class

我知道以前有人問過這個問題,但我找不到解決方案的正確帖子。

我在一個 winform 項目中工作,我需要從我的主窗體調用一個方法到另一個類。

我的代碼:

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

我想在另一個類中調用這個方法,這樣只有在啟用了復選框時才會完成睡眠。

很抱歉造成混亂,如果您需要更多信息,請詢問。

解決這個問題的另一種方法是創建一個名為 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. 在初始化其他類時傳遞對復選框的引用。 你用類似MyClass foo = new MyClass(...);東西創建類MyClass foo = new MyClass(...); . 只需將復選框傳遞給類構造函數: MyClass foo = new MyClass(checkBox1, ...)

  2. 將復選框公開為靜態。 不應該這樣做,因為這是個壞主意,如果你需要這樣做,你的應用程序設計得不好。 但是,如果您需要... 添加public static CheckBox checkbox; 到您的表單,並在您的表單的構造函數中添加checkbox = checkBox1; . 然后,您可以使用<YourForm>.checkbox訪問復選框。

  3. 按照 Fildor 的建議使用應用程序設置 這可能是最好的方法,但如果您沒有經驗,可能很難做到。

一定要找到一些關於如何設計 WinForms 應用程序的教程或指南,否則一旦開始做更大的事情,你就會遇到問題。 如果您不熟悉 WinForms,請考慮使用WPF ,它基本上是現代 WinForms。 WinForms 是過時的技術,不再開發。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM