ToolStripMenuItem单击事件应返回一个类
本文关键字:一个 单击 事件 返回 ToolStripMenuItem | 更新日期: 2023-09-27 18:25:04
我有一个DataGrid
和ContextMenuStrip
。当我在一行中单击SelectMenuStrip
时,我希望上下文菜单的ClickEvent
在databean
类中获取该行中的所有数据,并返回该databean
类,这样我就可以在另一个类中填充数据-一切都很好,我将事件定义为以下
private CustomerDataBean toolStripMenuItem1_Click(object sender, EventArgs e)
{
CustomerDataBean custdatabean = null;
int rowno = tblcustomerdataview.CurrentCellAddress.Y;
custdatabean.Customerpk = int.Parse(tblcustomerdataview.Rows[rowno].Cells[0].Value.ToString());
custdatabean.Contactno = tblcustomerdataview.Rows[rowno].Cells[6].Value.ToString();
custdatabean.Emailid = tblcustomerdataview.Rows[rowno].Cells[7].Value.ToString();
custdatabean.Other = tblcustomerdataview.Rows[rowno].Cells[8].Value.ToString();
return custdatabean;
}
但在designer.cs
中,我收到了一个行错误:
this.toolStripMenuItem1.Click += new System.EventHandler(this.toolStripMenuItem1_Click);
错误为:
错误1:
"WindowsFormsApplication3.CustomerDataBean WindowsFormsAapplications3.CustomerSearch.toolStripMenuItem1_Click(object,System.EventArgs)"具有错误的返回类型D:''WindowsFormsApplication3''WindowsFformsApplication3''Merchandision''CustomerSearch.Designer.cs 83 46 NFTRANS
我哪里做错了什么?让我解释一下情况我有一个jobcodeform,用户应该在combox中输入客户代码,如果他忘记了客户代码,他可以使用按钮转到另一个名为customersearch的表单,其中有一个带有上下文菜单条的数据网格表,当单击该表时,它会获取客户表中所选行的全部详细信息,并将其返回到第一个jobcodeform
您的代码没有多大意义。点击事件不会返回任何内容(除了void),它们实际上只是运行一个过程。
您的快速解决方案是匹配处理程序的签名:
private void toolStripMenuItem1_Click(object sender, EventArgs e)
{
// do something, don't return anything
}
您需要定义的是您试图对CustomerDataBean
对象执行什么操作。如果你只是想把它添加到列表中,那么就把它添加在列表中:
private void toolStripMenuItem1_Click(object sender, EventArgs e)
{
CustomerDataBean custdatabean = new CustomerDataBean();
// set properties
myBeans.Add(custdatabean);
}
您当前拥有的代码甚至没有创建CustomerDataBean对象。它是null,然后您正试图更新一个null对象。这行不通。
问问自己,点击事件应该将对象返回到哪里
什么代码将处理该bean?
其他人已经解释了您的点击事件的问题。
这里有一种可能的方法:
让您的点击事件调用一个单独的方法来处理bean。也许是这样的:
private void toolStripMenuItem1_Click(object sender, EventArgs e)
{
CustomerDataBean custdatabean = null;
int rowno = tblcustomerdataview.CurrentCellAddress.Y;
custdatabean.Customerpk = int.Parse(tblcustomerdataview.Rows[rowno].Cells[0].Value.ToString());
custdatabean.Contactno = tblcustomerdataview.Rows[rowno].Cells[6].Value.ToString();
custdatabean.Emailid = tblcustomerdataview.Rows[rowno].Cells[7].Value.ToString();
custdatabean.Other = tblcustomerdataview.Rows[rowno].Cells[8].Value.ToString();
processBean(custdatabean);
}
private void processBean(CustomerDataBean bean)
{
//Code to process the bean here.
}
ToolStripMenuItem点击事件处理程序需要返回void。