2017-12-31 138 views
-1

klicken Ich habe ein Hauptprojekt, das ein Panel und ein Menü hat. Wenn der Benutzer auf die Schaltfläche klickt, möchte ich ein Benutzersteuerelement laden.Instance UserControl in Windows Forms aus einer anderen Klassenbibliothek, wenn Sie auf

Ich habe die Klassenbibliothek für UI erstellt. Aber wenn ich auf die Schaltfläche klicke, wird das Benutzersteuerelement im Hauptprojekt nicht geladen. Was ist das Problem?

Hauptprojekt:

private void BtnMainPage_Click(object sender, EventArgs e) 
{ 
     if (!PanelHome.Controls.Contains(Home.Instance)) 
     { 
      PanelHome.Controls.Add(Home.Instance); 
      Home.Instance.Dock = DockStyle.Fill; 
      Home.Instance.BringToFront(); 
     } 
     else 
     { 
      Home.Instance.BringToFront(); 
     } 
} 

UI:

public partial class Home : UserControl 
{ 
    #region Variable 
    public static Home Instance 
    { 
     get 
     { 
      return Singleton<Home>.GetInstance(); 
     } 
    } 
    #endregion 

    public Home() 
    { 
     InitializeComponent(); 
     MessageBox.Show("Load"); 
    } 
} 

Singleton:

public sealed class Singleton<T> where T : class, new() 
{ 
    private volatile static T Instance; 
    private static object _lock = new object(); 

    public static T GetInstance() 
    { 
     if (Instance == null) 
     { 
      lock (_lock) 
      { 
       if (Instance == null) 
       { 
        Instance = new T(); 
       } 
      } 
     } 
     return Instance; 
    } 
} 
+0

warum es ein Singleton sein? Das ist seltsam für eine Benutzerkontrolle. – Ctznkane525

+1

Sie [diese Frage wurde bereits gestellt] (https://stackoverflow.com/questions/48040931/not-load-user-controle-in-homepanel-from-other-project#comment83054074_48040931). Bitte missbrauchen Sie das System nicht mit mehreren Benutzerkonten. Und missbrauche unsere Freizeit nicht, wir haben hier eine strenge ["be nice" Politik] (https://stackoverflow.com/help/be-nice). –

Antwort

-1
private void FrmDashboard_Load(object sender, EventArgs e) 
{ 
    DataTable dt = DAl.GetTables(); 
    DataTable dt1; 

    if (dt.Rows.Count > 0) 
    { 

     for (int i = 0; i < dt.Rows.Count; i++) 
     { 
      o = new Available(); 
      if (dt.Rows[i]["Status"].ToString() == "A   ") 
      {`enter code here` 
       o.lblTable.BackColor = Color.DarkSeaGreen; 
      } 
      if (dt.Rows[i]["Status"].ToString() == "B   ") 
      { 
       o.lblTable.BackColor = Color.DarkRed; 
      } 
      else if (dt.Rows[i]["Status"].ToString() == "C   ") 
      { 
       o.lblTable.BackColor = Color.Blue; 
      } 
      o.ButtonClick1 +=new Available.EventHandler(o_ButtonClick1);  
      // MessageBox.Show(o.vButton1.Tag.ToString()); 
      o.lblTable.Text = i + ""; 
      panel.Controls.Add(o); 
     } 
    } 
} 

protected void o_ButtonClick1(object sender, EventArgs e) 
{ 
    MessageBox.Show(o.lblTable.Text); 
} 
Verwandte Themen