ToolStripMenuItem单击事件应该返回一个类

时间:2012-02-17 19:40:08

标签: c# winforms

我有一个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

3 个答案:

答案 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。

相关问题