동적으로 생성 된 탭 페이지에 컨트롤을 추가 할 때 문제가 있습니다. 내 소프트웨어는 레스토랑 용 POS 시스템입니다. 내 생각은 레스토랑 지역을 먼저 만들고 지역마다 다른 수의 책상이 있습니다. 예 : 식당은 15 개의 책상이 있고 카페는 22 개의 책상이 있습니다. 이 경우 지역 및 제품과 같은 것은 책상이 있습니다. 그렇게하려면 tabcontrol
구성 요소를 사용하십시오! 모두 tabpages
은 지역 이름이며 탭 콘텐츠는 buttons
으로 표시되어야합니다.C# winforms 동적으로 생성 된 탭 페이지에 컨트롤 추가
모든 지역과 책상은 MySql
데이터베이스에 저장됩니다.
따라서 tab_1 (지역 # 1)을 콘텐츠 루프로 선택하면 모든 책상 buttons
페이지에 있습니다.
내 코드 모든 시간 반환 한 책상하지만 난 목록 지역에 대한 지역 1 10 개 책상 ..
코드가 여기
private void RegionList()
{
try
{
using (var conn = new MySqlConnection(Properties.Settings.Default["connectionstring"].ToString()))
{
conn.Open();
using (MySqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "SELECT * FROM regions";
MySqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
TabPage tabPage = new TabPage();
string name = reader["name"].ToString();
int id = Convert.ToInt32(reader["id"]);
tabPage.Name = "tab_" + id;
tabPage.Text = name;
foreach (var desk in DeskList(id))
{
tabPage.Controls.Add(desk);
}
tabControl1.TabPages.Add(tabPage);
}
reader.Close();
}
conn.Close();
};
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
와 특정 지역에 책상을 나열하는 코드는 :
private List<Button> DeskList(int regionID)
{
List<Button> desks = new List<Button>();
try
{
using (var conn = new MySqlConnection(Properties.Settings.Default["connectionstring"].ToString()))
{
conn.Open();
using (MySqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "SELECT * FROM desks WHERE region_id = @id";
cmd.Parameters.AddWithValue("id", regionID);
MySqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
Button btn = new Button();
string name = reader["name"].ToString();
btn.Text = name;
btn.Name = "desk_" + reader["id"];
btn.Size = new Size(100, 60);
desk.Add(btn);
}
reader.Close();
};
conn.Close();
};
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
return desks;
}
그래서 내가 루프 할 때 나는 모든 지역에서 단지 1 개의 책상을 사용하지만 올바른 결과를 얻습니다. 모든 지역에는 최소 10 개의 책상이 있습니다. 내가 뭘 잘못 했니? Maybie 내 appoarch가 잘못되었습니다
버튼의 모든 개체가 UI에 생성되는 가능하지만 아무것도로 설정되어있는 위치가 없기 때문에'의 호출자가 DeskList' 모든이 작업을 수행하지 않는 한 그들은 (아마 서로의 상부에 적층) –
DeskList (id)는 10 개의 요소 목록을 반환합니까? – hellogoodnight
예 위치에 문제가 있습니다. 위치를 추가 할 때 버튼이 이제 막 쌓입니다. – Ivan