不能使用contextmenustrip项显示按钮文本
本文关键字:显示 按钮 文本 contextmenustrip 不能 | 更新日期: 2023-09-27 18:05:26
我的表单上有许多按钮是由代码生成的(在表单加载事件上),像这样:
for(int j = 0; j < 30; j++)
{
Button btn = new Button();
btn.Text = numb_cust;
//The text will be different for every button created
btn.ContextMenuStrip = MyContextMS;
//Every button will have this contextMenuStrip
}
和一个ContextMenuStrip,只有一个名为'See details'的项目,我想做的是打开一个MessageBox,当我点击该项目时显示按钮的文本我有这个:
Button B;
private void MyContextMS_Opening(object sender, System.ComponentModel.CancelEventArgs e)
{
B = sender as Button;
}
private void SeeDetailsToolStripMenuItem_Click(object sender, EventArgs e)
{
Button b = B;
MessageBox.Show(b.Text);
}
但我得到NullReferenceException上的按钮b当它试图显示MessageBox,请帮助我。
发送者永远不会是按钮,因为发送者是正在进行点击的ToolStripMenuItem。
尝试检查sourceccontrol属性:
Control ctrl;
void MyContextMS_Opening(object sender, CancelEventArgs e) {
ctrl = ((ContextMenuStrip)sender).SourceControl;
}
private void SeeDetailsToolStripMenuItem_Click(object sender, EventArgs e) {
Button b = ctrl as Button;
if (b != null) {
MessageBox.Show(b.Text);
}
}