2017-10-06 5 views
0

ボタンをクリックしたときにusercontrolを変更するメソッドを作成しようとしています。それは私に私の形で、この行でエラーが発生しますC#winformsは、メソッドとしてパネル内のusercontrolを変更します。

のUserControl

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

あなたはシングルレットを持っているので、クラス自体を渡していますが、そのメソッドはそのインスタンスを取りますN財産あなたはそれを使用することができます。

ChangeInstance(UserSettings.Instance); 

そうしないと、フィールドとしてLogAnalyzerMain、例えば、どこかのインスタンスを格納するために持っていたか、それはあなたのフォーム上のコントロールの場合は、this.Controls.OfType<UserSettings>().First()

関連する問題