私は1つのフォーム内で実行するメソッドを持っていますが、メソッドに渡すために別のフォームからデータを取得する必要があります。C#WinForms - 別フォームを使用してテキストボックスからデータを取得する方法
どうすればよいですか?
私は1つのフォーム内で実行するメソッドを持っていますが、メソッドに渡すために別のフォームからデータを取得する必要があります。C#WinForms - 別フォームを使用してテキストボックスからデータを取得する方法
どうすればよいですか?
formBがformAで初期化されていると仮定して、Texbox1を送信するformBのコンストラクタに文字列を追加することをお勧めします。
class formB: Form{
private string data;
public formB(string data)
{
InitializeComponent();
this.data = data;
}
//rest of your code for the class
}
プロパティを1つのフォームで公開し、別のフォームから呼び出すことができます。もちろん、form1のインスタンスを取得するいくつかの方法が必要になります。プログラムクラスやその他の親クラスの静的プロパティとして保持することができます。通常この場合、私はインスタンスを保持する静的アプリケーションクラスを持っています。
public static class Application
{
public static MyForm MyFormInstance { get; set; }
}
次に、最初のフォームを起動するときに、アプリケーションMyFormInstanceプロパティを最初のフォームのインスタンスに設定します。
MyForm instance = new MyForm();
Application.MyFormInstance = instance;
2番目のフォームにプロパティを追加します。
public String MyText
{ get { return textbox1.Text; }
set { textbox1.Text = value; }
}
そしてあなたとあなたの第二のフォームからアクセスすることができます:あなたはプロパティまたはテキストを返すメソッドのいずれかを露出させ、データを必要とするテキストボックスを持つフォームで
Application.MyFormInstance.MyText
。 IE:
internal string TextBoxTest
{
get{ return this.textBox1.Text;}
}
どうすれば元のメソッドを実行したいフォームからそのメソッドを呼び出すことができますか? – Goober
これを行わないでください。
長いバージョン:あなたのビューが別のビューと直接対話しているのはなぜですか?
はるかに長いバージョン:
むしろフィールドを公開するパブリックプロパティを作るよりも、興味のある分野を持つ形だったデータオブジェクトのいくつかのフォーム、と相互作用している場合、それは変化から、より良いカプセル化と絶縁を提供します興味のある方法に渡されます。
興味のある方法の場所は注意深く考慮する必要があります - ビューの側面(あなたの場合はWinForm)を制御するならば、そのクラスのメンバーになるかもしれません - もしそうでなければ、データオブジェクト?
同様の投稿は以下here
ビデオは2つの形態の間でデータを渡すことについてのあなたの概念の多くを解消しますがあります。パラメータを使用してhttp://windowsclient.net/learn/video.aspx?v=108089
FormToForm - - http://windowsclient.net/learn/video.aspx?v=105861
2つのフォーム間でデータを渡すために、複数の方法がありますが、プロパティを使用して、この
FormToFormを行うには例のビデオを持っているこれらのリンクをチェック
HTH
わかりのように、テキスト
は、より簡単な方法は、あなたがそれを直接アクセスすることができ、パブリックとしてテキストボックスのモディファイアプロパティをマークするだろうが、あなたはまだ、インスタンスを取得する方法が必要になります。 –