我有一个TableLayoutPanel,其中添加了一些控件,如Label和PictureBox。现在,我正在尝试在这个MouseClick中添加一个TableLayoutPanel处理程序。如果我确实删除了这些控件标签并使用PictureBox,就会正确地触发Handler,但是对于控件,我尝试将这些控件发送回原来的位置,例如:Label.SendToBack(),但它也不起作用。我认为问题在于控件标签和PictureBox,因为没有它们可以正常工作。
我怎么能解决这个问题?
void initComponents(){
IList<Mesa> lista = mDAO.findAll();
if (lista.Count > 0){
foreach (Mesa mesa in lista){
customPanel = new TableLayoutPanel();
customPanel.MouseClick += cms_MouseClick; //mouseclick of customPanel
customPanel.BorderStyle = BorderStyle.None;
customPanel.BackColor = Color.FromArgb(255, 255, 128);
customPanel.Size = new Size(100, 100);
customPanel.Name = Convert.ToString(mesa.id);
//label mesa
numMesa = new Label();
numMesa.Font = new Font(numMesa.Font.Name, 12, FontStyle.Bold);
numMesa.Text = Convert.ToString(mesa.id);
numMesa.SendToBack();
//picturebox
picture = new PictureBox();
picture.Anchor = (AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right);
picture.Image = IguanaBar.Properties.Resources.mesabar;
picture.SizeMode = PictureBoxSizeMode.StretchImage;
picture.SendToBack();
//label aviso
aviso = new Label();
aviso.Anchor = (AnchorStyles.Right);
aviso.Font = new Font(aviso.Font.Name, 6, FontStyle.Bold);
aviso.Text = "LIVRE";
aviso.ForeColor = Color.Green;
aviso.TextAlign = ContentAlignment.MiddleCenter;
picture.SendToBack();
//add components
customPanel.Controls.Add(numMesa);
customPanel.Controls.Add(picture);
customPanel.Controls.Add(aviso);
//add panel a panel principal
panelMesas.Controls.Add(customPanel);
}
}
//popup menu
cms = new ContextMenuStrip();
cms.Items.Add("Vender");
cms.Items.Add("Finalizar");
cms.Items.Add("Trocar");
}发布于 2016-12-21 02:58:17
你可以改变
numMesa.SendToBack();
picture.SendToBack();至
numMesa.MouseClick += cms_MouseClick; //mouseclick of customPanel
picture.MouseClick += cms_MouseClick; //mouseclick of customPanelhttps://stackoverflow.com/questions/41254315
复制相似问题