2017-10-06 91 views
0

我想單擊按鈕時更改usercontrol的方法。C#winforms在面板中更改用戶控件作爲方法

用戶控件

namespace LogAnalyzer 
{ 
    public partial class UserSettings : UserControl 
    { 
     private static UserSettings _instance; 
     public static UserSettings Instance 
     { 
      get 
      { 
       if (_instance == null) 
        _instance = new UserSettings(); 
       return _instance; 
      } 
     } 
     public UserSettings() 
     { 
      InitializeComponent(); 
     } 

     private void btnUnpackPath_Click(object sender, EventArgs e) 
     { 
      flowLayoutPanel1.Hide(); 
     } 
    } 
} 

我的形式

namespace LogAnalyzer 
{ 
    public partial class LogAnalyzerMain : Form 
    { 
     public LogAnalyzerMain() 
     { 
      InitializeComponent(); 
     } 

     private void ChangeInstance(Control tab) { 
      if (!panelDisplay.Controls.Contains(tab)) 
      { 
       panelDisplay.Controls.Add(tab); 
       tab.Dock = DockStyle.Fill; 
      } 
      tab.BringToFront(); 
     } 

     private void btnSettings_Click(object sender, EventArgs e) 
     { 
      ChangeInstance(UserSettings); 
     } 
    } 
} 

它給了我此行的錯誤在我的形式(「UserSettings」是一個類型,它是無效的在給定的情況下)

ChangeInstance(UserSettings); 
+0

嘗試'UserSettings.Instance ' – Reniuz

+0

這個錯誤是有道理的,它期望一個實例,而不是一個類型。應該改爲'ChangeInstance(UserSettings.Instance)'。 – dlatikay

回答

1

你正在傳遞類本身,但該方法需要它的一個實例,因爲你有一個singleto ñ屬性,你可以使用:

ChangeInstance(UserSettings.Instance); 

否則,您必須從某處存儲實例,例如在LogAnalyzerMain爲場或者如果它是你的窗體上的控件,您可以使用this.Controls.OfType<UserSettings>().First()

相關問題