2017-12-31 56 views
-1

私はパネルとメニューを持つメインプロジェクトを持っています。ユーザーがボタンをクリックすると、ユーザーコントロールを読み込みます。WindowsのインスタンスUserControl別のクラスライブラリからボタンをクリックすると

私はUI用のクラスライブラリを作成しました。しかし、ボタンをクリックすると、メインプロジェクトのユーザーコントロールがロードされません。何が問題ですか?

メインプロジェクト:

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

シングルトン:

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

なぜそれがシングルトンでなければならないのでしょうか?それはユーザーコントロールにとって奇妙です。 – Ctznkane525

+1

あなたは[すでにこの質問を投稿しました](https://stackoverflow.com/questions/48040931/not-load-user-control-in-homepanel-from-other-project#comment83054074_48040931)。複数のユーザーアカウントでシステムを乱用しないでください。私たちの自由時間を乱用しないでください。ここで厳密な( "すばらしい"方針)(https://stackoverflow.com/help/be-nice)があります。 –

答えて

-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); 
} 
関連する問題