2012-02-17 84 views
-1

我有一個DataGridContextMenuStrip在裏面。當我連續點擊SelectMenuStrip時,我希望ClickEvent的上下文菜單可以獲得databean類中該行中的所有數據,並返回該類,以便我可以將數據填充到另一個類中 - 一切正常我定義的事件如下ToolStripMenuItem click event should return a class

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); 

的錯誤是:

Error 1:
'WindowsFormsApplication3.CustomerDataBean WindowsFormsApplication3.CustomerSearch.toolStripMenuItem1_Click(object, System.EventArgs)' has the wrong return type D:\WindowsFormsApplication3\WindowsFormsApplication3\Merchandising\customerSearch.Designer.cs 83 46 NFTRANS

我在哪裏做錯了什麼? 讓我解釋一下情況 我有一個jobcodeform,用戶應該在combobox中輸入客戶代碼,如果他忘記了客戶代碼,他可以使用buton去另一個叫customersearch的表單,其中有一個帶有上下文菜單欄的datagrid表, customerDatabean中所選行的全部細節,並將其返回到第一個作業代碼表

+0

系統事件沒有返回任何內容,因爲這意味着你想返回類到windows。你想在哪裏退貨? ----------'MouseEventHandler'是一個'delegate',它只是帶有兩個參數的void方法。你不能向委託中添加不同的方法,並希望工作正常。 ----------你爲什麼不叫一個方法,在那裏做你的作品? – 2012-02-17 19:49:10

+0

標準事件返回'void',因爲它們是多播的。 – 2012-02-17 19:56:11

+0

@HenkHolterman:但它認爲原因是該方法返回到'system'而不是返回代碼。 – 2012-02-17 20:01:08

回答

-2

ToolStripMenuItem單擊事件處理程序需要返回void。

+1

由於您是Stack Overflow的新手,因此我會給您一個提示。當你想評論時,發表評論。 – 2012-02-17 19:50:40

+0

這不是一個評論。這是一個答案。他的代碼試圖從一個點擊事件處理程序返回一個對象,而那些需要返回void。 – Almo 2012-02-17 19:54:56

+0

答案將包括'爲什麼',最好是替代方案。你只是重複錯誤消息。 – 2012-02-17 19:57:05

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對象的代碼。它是空的,然後你試圖更新一個空對象。這是行不通的。

0

問問你自己應該在哪裏點擊事件返回對象?
哪些代碼將處理該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. 
}