2010-11-24 11 views
0

メインフォームと編集フォームを使用していますが、メインフォームの編集フォームのテキストボックスを使用したいのですが、どのようにすればいいですか?1のコントロールを別のフォームから使用する方法は?

編集

は、ユーザーコントロールを使用することはできません。

+0

@あなたはユーザーコントロールを使用できませんか? –

+0

宿題のdefenitionsでそう言われたので –

+0

"編集フォームのテキストボックスを使う"というのは、メインフォームから編集フォームにあるテキストボックスの値にアクセスしたいということですか? – Anna

答えて

2

最も簡単な方法は、テキストフィールドを公開するプロパティを作成することです。編集フォームを呼び出し、プロパティを読み戻してください。

public class MainForm 
{ 
    private void OnEditClick() 
    { 
    EditForm editForm = new EditForm(); 
    DialogResult result = editForm.ShowDialog(this); 
    //check the result for ok/cancel etc if your using them. 
    whatever = editForm.TextBox1; 
    whatever2 = editForm.TextBox2; 
} 

public class EditForm 
{ 
    public string TextBox1 { get { return textBox1.Text;} } 
    public string TextBox2 { get { return textBox2.Text;} } 
    // etc 
} 

あなたは、全体の制御を公開することができますが、あなたが気にすべてがちょうどそれらのクリーナーですが露出するようにプロパティを作成し、テキストボックスの内容である場合。

+0

私は、より良い方法は、データを格納するグローバルパブリッククラスを持っていると思うし、そのグローバルクラスからプロパティにアクセスします。もちろん、DataSourceを作成し、そのデータソースへのフォームのバインディングを設定し、データソース内のイベントにフックすることもできます。 – Darbio

+0

それは深刻なプログラムだったかもしれませんが、データを表現して取得するオブジェクトを作成することはおそらくあります。しかし、宿題としてタグ付けされているため、複雑さが増してもほとんど効果はありません。 –

0

ライブにする必要がありますか?そうでない場合は、編集フォームにプロパティを追加し、値を保存します(.Filenameを取得するときにOpenFileDialogが行うように)。閉じた後、プロパティを取得してメインフォームに配置します。

イベントを使用する必要がある場合は、イベントを使用する必要があります(SilverlightでINotifyPropertyChangedに近いものを実装してください)。次に、メインフォームを編集フォームのイベントに添付し、必要に応じてコントロールを更新します(InvokeRequired! )

関連する問題