0

私は複雑なリボンアプリケーションに取り組んでいますが、これまでのところうまくいっていますが、をダブルクリックした後、 DataGridView の値をTextBox別のに渡す必要があるという少し難しい状況があります。FormDataGridView

4

1 に答える 1

0

実際にはかなりの数のオプションがあります。それはすべてアプリケーションのコード/アーキテクチャに依存しますが、一般的に探しているのはデリゲートです。デリゲート向けの入門レベルの記事は次のとおりです:リンク。また、アクションとラムダについても紹介するいくつかの基本的な例へのリンクがあります

または、これらの 2 つのフォームが相互に認識できる場合 (1 つの親に両方のフォームへの参照がある場合)、ソース フォームでイベントを作成し、宛先フォームでそれをサブスクライブして、その方法でデータを渡すことができます。

ソースフォーム:

• 代理人を定義する

public delegate void RibbonDataHandler(string);

• イベントを定義する

public event RibbonDataHandler RibbonData;

• イベントを実行するメソッドを定義する

protected virtual void OnRibbonData( string value )
{
    if( RibbonData != null )
        RibbonData( value );
}

DataGridViewのDoubleClickイベント ハンドラでイベントを呼び出します。

string value = // Get Value from the gridView
OnRibbonData( value );

送信先フォーム: • TextBox値 を設定するパブリック プロパティを追加し

public string TextBoxValue
{
    get { return txtValue.Text; }
    set { txtValue.Text = value; }
}

親フォーム:

• これらの 2 つのフォームをフィールドとして追加します

private Form _sourceForm;
private Form _destinationForm;

• フォームを初期化する

// Well, initialize the forms in the way you need it, maybe on the Load event?
_sourceForm = new SourceForm();
_destinationForm = new DestinationForm();
_sourceForm.RibbonData += new SourceForm.RibbonDataHandler(OnRibbonData);

• RibbonData ハンドラを定義する

private void OnRibbonData( string value )
{
    _destinationForm.TextBoxValue = value ?? String.Empty;
}

免責事項: 私はこれをすべて頭から書きました。現時点ではVSを持っていません。さらに質問がある場合、または何かが機能しない場合は、コメントを残してください. :)

于 2012-12-18T10:17:28.647 に答える