C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: 他のForm上テキストボックスへの値の代入


(過去ログ 42 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■21823 / inTopicNo.1)  他のForm上テキストボックスへの値の代入
  
□投稿者/ 林檎 (1回)-(2008/07/10(Thu) 12:45:43)

分類:[C#] 

どなたかお知恵を貸してください。

Form1 と Form2 があり、
Form1には textbox1 がデザイナにより配置されています。
「Form2に配置されているボタンを押すと、Form1のtextbox1に"a"というテキストを
挿入したいのですが、

private void button1_Click(object sender, EventArgs e)
{
Form1.textbox1.Text = "a".ToString();
}
では、
「静的でないフィールド、メソッド、またはプロパティ で、オブジェクト参照が必要です。」
とでてしまいます。静的メンバなど本で調べていますが、いまいちわかりません。
どうか、対処法をお教え願えませんでしょうか?

よろしくお願いします。
引用返信 編集キー/
■21824 / inTopicNo.2)  Re[1]: 他のForm上テキストボックスへの値の代入
□投稿者/ やじゅ (482回)-(2008/07/10(Thu) 12:57:17)
やじゅ さんの Web サイト
2008/07/10(Thu) 13:04:42 編集(投稿者)

>■No21823 (林檎 さん) に返信
>

よくある質問ですね、やはりここで躓く人が多いんですね。
http://bbs.wankuma.com/index.cgi?mode=al2&namber=14162&KLOG=30

Form1からForm2への参照
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=38970&forum=7

Form2はどうやって表示しましたか?
おそらくForm1のメソッドの中で new Form2() ののち Show したはず。
Form2にForm1型のメンバをひとつ追加し、Showする前にForm1の参照を与えておきます。

class Form1 : Form {
void なにか() {
Form2 form2 = new Form2();
form2.Master = this; // ここでセット
form2.Show();
...
}
}

class Form2 : Form {
public Form1 Master; // これ追加

private void button1_Click(object sender, EventArgs e)
{
Master.textbox1.Text = "a".ToString();
}
...
}

引用返信 編集キー/
■21825 / inTopicNo.3)  Re[1]: 他のForm上テキストボックスへの値の代入
□投稿者/ オガシン (20回)-(2008/07/10(Thu) 13:03:04)
2008/07/10(Thu) 13:06:20 編集(投稿者)
2008/07/10(Thu) 13:04:48 編集(投稿者)

<pre><pre>From1というのは型(クラス、設計図)なので
下記のように記述しないといけません。(他の部分でインスタンス化されていれば良いですが)
エラーを見る限りインスタンス化がされていないと推測されます。

private void button1_Click(object sender, EventArgs e)
{
Form1 fr1 = new From1(); //Formを設計図から実体化する(インスタンス化)
fr1.textbox1.Text = "a".ToString();
}

注)Form1のデザイナでtextbox1のModifiersプロパティを「Public」にする必要があります。

#ただ、クラスのメンバー(部品)を直接いじるのはあんまり良くないと思います。
<編集>
 かぶってしまったOrz
 やじゅさんが記述している方法のほうがよっぽど良い手法ですね(汗
</編集>
</pre></pre>
引用返信 編集キー/
■21846 / inTopicNo.4)  Re[2]: 他のForm上テキストボックスへの値の代入
□投稿者/ 林檎 (2回)-(2008/07/10(Thu) 19:20:52)
ありがとうございました!
質問の前に過去ログを検索するべきでした。
申し訳ありません。

問題無事解決しました。
こういった例に慣れていこうと思います。

お忙しいところ、本当にありがとうございました。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -