2017-10-06 1 views
0

Ich versuche, eine Methode zum Ändern von Benutzersteuerelement, wenn eine Schaltfläche geklickt wird.C# winforms ändern usercontrol in Panel als Methode

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(); 
     } 
    } 
} 

Meine Form

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); 
     } 
    } 
} 

Es hat mir in dieser Zeile in meiner Form einen Fehler gibt ('Usersettings' ist eine Art, die nicht gültig im gegebenen Kontext ist)

+0

Versuchen 'UserSettings.Instance ' – Reniuz

+0

und dieser Fehler ist berechtigt, es erwartet eine Instanz, kein Typ. sollte stattdessen "ChangeInstance (UserSettings.Instance)" sein. – dlatikay

Antwort

1

Sie übergeben die Klasse selbst, aber die Methode nimmt eine Instanz davon, da Sie einen Singleto haben n Eigenschaft könnte Sie verwenden:

ChangeInstance(UserSettings.Instance); 

Ansonsten hatten die Instanz irgendwo zu speichern, zum Beispiel in der LogAnalyzerMain als Feld oder wenn es sich um eine Kontrolle auf dem Formular ist könnten Sie this.Controls.OfType<UserSettings>().First()

Verwandte Themen