ダイナミックに作成されたタブページにコントロールを追加するときに問題があります。私のソフトウェアはレストランの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が間違っている
ButtonオブジェクトのすべてがUI上で作成されている可能性があるが、何に設定された何場所がないので、 'の呼び出し側はDeskList'はすべてこれを行いない限り、彼らは(おそらくすべて互いの上に積み重ねられています) –
DeskList(id)は10要素のリストを返しますか? – hellogoodnight
はい場所に問題があります。ボタンがちょうど積み重なっていて、場所の作業を追加するときに便利です。 – Ivan