无法使用上下文菜单项显示按钮文本
Cant show button text using a contextmenustrip item
我的表单上有许多按钮是由代码(在表单加载事件中)生成的,如下所示:
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
}
还有一个只有一个名为 'See details' 的项目的 ContextMenuStrip,我想做的是打开一个 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);
}
但是当 Button b 试图显示 MessageBox 时我得到 NullReferenceException,请帮助我。
发件人永远不会是按钮,因为发件人是执行点击的 ToolStripMenuItem。
尝试检查 SourceControl 属性:
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);
}
}
我的表单上有许多按钮是由代码(在表单加载事件中)生成的,如下所示:
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
}
还有一个只有一个名为 'See details' 的项目的 ContextMenuStrip,我想做的是打开一个 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);
}
但是当 Button b 试图显示 MessageBox 时我得到 NullReferenceException,请帮助我。
发件人永远不会是按钮,因为发件人是执行点击的 ToolStripMenuItem。
尝试检查 SourceControl 属性:
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);
}
}