问题描述
我正在使用餐厅POS系统,我创建了一个表格来显示用户可以要求添加到那里的所有其他商品,这是表格:
在此表单中,我添加了一个flowlayoutpanel
,并向此flowlayoutpanel
添加了多个用户控件,每个用户控件都有一个PictureBox
和Label
和{{1} }。我在CheckBox
中填充用户控件,如下所示:
flowlayoutpanel
我就能得到这样的标签文本:
flowLayoutPanel2.Controls.Clear();
DB_conn.Query2("get_food_extras");
DB_conn._dr = DB_conn._cmd.ExecuteReader();
while (DB_conn._dr.Read())
{
Extra_uc UC = new Extra_uc
{
Extras_ID = DB_conn._dr["ID"].ToString(),Extras_Price = Convert.ToDecimal(DB_conn._dr["price"].ToString()),Extras_name = DB_conn._dr["name"].ToString()
};
if (DB_conn._dr["image"] != DBNull.Value)
{
byte[] image = (byte[])DB_conn._dr["image"];
image = Decompress(image);
var stream = new MemoryStream();
stream.Write(image,image.Length);
var bitmap = new Bitmap(stream);
UC.Extras_image = bitmap;
}
UC.CheckBox1.CheckedChanged += UC_PictureBox1_Click;
UC.MaterialImage.Click += UC_PictureBox1_Click;
UC.Material_name_txt.Click += UC_PictureBox1_Click;
UC.MaterialImage.MouseDown += UC_PictureBox1_MouseDown;
UC.Material_name_txt.MouseDown += UC_PictureBox1_MouseDown;
UC.MaterialImage.MouseMove += UC_PictureBox1_MouseMove;
UC.Material_name_txt.MouseMove += UC_PictureBox1_MouseMove;
flowLayoutPanel2.Controls.Add(UC);
}
DB_conn._dr.Close();
我能够获得点击的private void UC_PictureBox1_Click(object sender,EventArgs e)
{
if (!Food_Moved)
{
string Extra_Name = "";
CheckState checkd = CheckState.Unchecked;
if (sender is Label lab)
{
Extra_Name = lab.Tag.ToString();
}
else if (sender is PictureBox btn1)
{
Extra_Name = btn1.Tag.ToString();
}
else if (sender is Guna.UI2.WinForms.Guna2CheckBox ck)
{
checkd = ck.CheckState;
}
MessageBox.Show(Extra_Name.ToString());
}
else
{
Food_Moved = false;
}
}
的{{1}}文本,我现在想要的是如何获取选中的label
的所有user control
文本?>
解决方法
根据代码,您有一个名为UserControl
的{{1}},其中包含Extra_uc
属性,该属性保存一个额外项的名称,以及一个Extras_name
控件,该属性CheckBox
属性设置为Modifiers
。
在这种情况下,您可以像这样简单地获取选中的项目:
internal/public