2012-02-17 13 views
-1

DataGridContextMenuStripが含まれていました。 SelectMenuStripを連続してクリックすると、コンテキストメニューのClickEventがその行のすべてのデータをdatabeanクラスに取得し、そのdatabeanクラスを返すので、別のクラスのデータを埋め込むことができます。 すべてがうまくイベントを定義しました私はラインでエラーを取得していますToolStripMenuItemのクリックイベントでクラスが返される

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を持っていました。私はcustomcodeをコンボボックスに入力する必要があります。customercodeを忘れてしまった場合は、顧客検索と呼ばれる別のフォームに行くことができます。選択した行の詳細をすべてcustomerdatabeanに格納し、最初のjobcodeformに戻します。

+0

システムイベントは、クラスをウィンドウに戻すことを意味するため、何も返しません。どこに戻したいのですか? ---------- 'MouseEventHandler'は' delegate'であり、towパラメータを持つvoidメソッドを取得します。デリゲートに異なるメソッドを追加することはできませんし、正常に動作することが期待されます。なぜあなたは方法を呼んでいないのですか? –

+0

標準イベントはマルチキャストであるため、 'void'を返します。 –

+0

@HenkHolterman:しかし、その理由は、メソッドが 'system'に戻り、' code'を返さないという理由があると思います。 –

答えて

-2

clickStartMenuItemクリックイベントハンドラはvoidを返す必要があります。

+1

スタックオーバーフローを初めて知ったので、私はあなたにヒントを与えます。あなたがコメントしたいときは、コメントを投稿してください。 –

+0

これはコメントではありませんでした。それは答えだった。彼のコードは、クリックイベントハンドラからオブジェクトを返そうとしており、それらはvoidを返す必要があります。 – Almo

+0

答えには「理由」と好ましくは代替が含まれます。エラーメッセージを繰り返すだけです。 –

3

あなたのコードはあまり意味がありません。 Clickイベントは何も返さず(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オブジェクトを更新しようとしています。それはうまくいきません。

0

クリックイベントでオブジェクトをどこに返すべきか尋ねます。
そのBeanを処理するコードは何ですか?

他の人は、あなたのクリックイベントに何が間違っているか説明しました。

あなたのクリックイベントは、Beanを処理するために別のメソッドを呼び出すことがあります:

ここに1つの可能な方法があります。

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. 
} 
関連する問題