我有一个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 WindowsFormsApplication3.CustomerSearch.toolStripMenuItem1_Click(object,System.EventArgs)'具有错误的返回类型D:\ WindowsFormsApplication3 \ WindowsFormsApplication3 \ Merchandising \ customerSearch.Designer.cs 83 46 NFTRANS
我在哪里做错了什么? 让我解释一下情况 我有一个jobcodeform,用户应该在组合框中输入客户代码,如果他忘记了客户代码他可以使用buton转到另一个名为customersearch的表单,其中有一个带有上下文menustrip的数据网格表,当点击它时获取所选行的全部细节customerdatabean并将其返回到第一个jobcodeform
答案 0 :(得分:3)
你的代码没有多大意义。点击事件不会返回任何内容(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对象。那不行。
答案 1 :(得分:0)
问问自己点击事件应该将对象返回到哪里?
什么代码将处理该bean?
其他人已解释您的点击事件有什么问题。
这是一种可能的方法:
让您的click事件调用一个单独的方法来处理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.
}
答案 2 :(得分:-2)
ToolStripMenuItem单击事件处理程序需要返回void。