2017-12-31 178 views
-1

패널과 메뉴가있는 주 프로젝트가 있습니다. 사용자가 버튼을 클릭하면 사용자 정의 컨트롤을로드하려고합니다.다른 클래스 라이브러리에서 Windows Forms의 인스턴스 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-controle-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); 
}