Inquiridor
Menu dinamico usando MenuStip X ToolStripMenuItem X Propriedade TAG

Pergunta
-
Pessoal,
Achei alguns posts sobre menu de acesso dinamico mas ainda nao consegui resolver meu problema. Vou deixar o codigo abaixo para anlise:
private void CadCliente(object sender, EventArgs e) { } private void Form1_Load(object sender, EventArgs e) { MenuStrip menu = new MenuStrip(); ToolStripMenuItem tsmiCadastro = new ToolStripMenuItem("Cadastro"); ToolStripMenuItem tsmiRelatorio = new ToolStripMenuItem("Relatorio"); ToolStripMenuItem tsmiCadastroCliente = new ToolStripMenuItem("Cad Cliente", null, new EventHandler(this.CadCliente)); tsmiCadastroCliente.Tag = 10; ToolStripMenuItem tsmiCadastroUsuario = new ToolStripMenuItem("Cad Usuario", null, new EventHandler(this.CadCliente)); tsmiCadastroUsuario.Tag = 20; ToolStripMenuItem tsmiRelatorioCliente = new ToolStripMenuItem("Rel Cliente", null, new EventHandler(this.CadCliente)); tsmiRelatorioCliente.Tag = 30; ToolStripMenuItem tsmiRelatorioUsuario = new ToolStripMenuItem("Rel Usuario", null, new EventHandler(this.CadCliente)); tsmiRelatorioUsuario.Tag = 40; tsmiCadastro.DropDownItems.Add(tsmiCadastroCliente); tsmiCadastro.DropDownItems.Add(tsmiCadastroUsuario); tsmiRelatorio.DropDownItems.Add(tsmiRelatorioCliente); tsmiRelatorio.DropDownItems.Add(tsmiRelatorioUsuario); menu.Items.Add(tsmiCadastro); menu.Items.Add(tsmiRelatorio); this.Controls.Add(menu); }
O que acontece é que no meu evento:
private void CadCliente(object sender, EventArgs e){}
Eu preciso pegar o valor da propriedade TAG dos ToolStripMenuItem
É possivel fazer isso?
Grato pela atenção.
Todas as Respostas
-
Sim você consegue só altere o código para ficar mais fácil.
*Nota : Se você não alterar tambem é possível porem você teria que percorrer a lista do Controls até encontrar o componente MenuStrip.
O código ficaria assim.
MenuStrip menu; private void Form1_Load(object sender, EventArgs e) { menu = new MenuStrip(); . . . //tudo igual } private void CadCliente(object sender, EventArgs e) { foreach(var item in menu.Item){ foreach(var toolStrip in item.DropDownItems){ //toolStrip.Tag.; } } }
Não testei propriamente o código mas garanto que funciona com alguma pequenas alteracoes
-
-
-
Pessoal,
Consegui o resultado esperado fazendo desta maneira:
private void CadCliente(object sender, EventArgs e) { var x = (sender as ToolStripMenuItem).Tag.ToString(); MessageBox.Show(x); }
Mesmo tendo funcionado, esta é a melhor maneira? Posso ter algum tipo de problema com isso? Pode ser melhorado.
Obrigado pela atenção.