不能使用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,请帮助我。

不能使用contextmenustrip项显示按钮文本

发送者永远不会是按钮,因为发送者是正在进行点击的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);
  }
}