DOBON.NET DOBON.NETプログラミング掲示板過去ログ

別クラスでボタンのテキストを出力するには・・・

環境/言語:[Microsoft Visual C# .NET]
分類:[.NET]

お世話になっています。
いろいろ調べてみたのですが、わからなく
また教えて頂きたく書き込みします・・・ よろしくお願い致します。


button1をクリックし、そのbutton1のテキストを別クラスから出力する方法を考えています
同じクラスで出力する方法は簡単にわかったのですが・・・

■同じクラスでは下記のようなプログラムを作り、うまくいきました。

public void button1_Click(object sender, System.EventArgs e)
{
button1.Text="テスト";
}

■たとえばForm1とForm2があり、Form1のbutton1をクリックして、Form2のa2メソッドを呼び出し
button1のテキストを出力するには下記のBBBをどう書けばいでしょうか?

・Form1.csにあるForm1クラス
public void button1_Click(object sender, System.EventArgs e)
{
Form2 aa=new Form2();
aa.a2();
}

・Form2.csにあるForm2クラス
public void a2()
{
BBB
}

よろしくお願いします。
こちらの Tips が参考になるかと。

別のフォームのデータを取得、設定する
http://dobon.net/vb/dotnet/form/accessanotherformdata.html
早速の返信、ありがとうございます!

今仕事で調べられないので、夕方調べて見ます〜。
ありがとうございます。
以下でうまくいきました。

■Form1

private static Form1 _form1Instance;

public static Form1 Form1Instance
{
get
{
return _form1Instance;
}
set
{
_form1Instance = value;
}
}

public string bbuton
{
get
{
return button1.Text;
}
set
{
button1.Text = value;
}
}


private void Form1_Load(object sender, System.EventArgs e)
{
Form1.Form1Instance = this;
}

public void button1_Click(object sender, System.EventArgs e)
{
Form2 aa=new Form2();
aa.kkey();
}

■Form2
public void kkey()
{
Form1.Form1Instance.bbuton = "こんにちは。";
}
ありがとうございます。

上記でうまくいったのですが、このForm1とForm2に分けた意図は、
後で見やすいよう、できるだけForm1における記述を少なくしたいためなのです。

もっと、Form1の記述を減らせるような方法はないでしょうか?
できれば、Form1にはForm2を呼び出す以外の記述は置きたくないのですが・・・

よろしくお願い致します。
こんにちは、じゃんぬ です。

■No11041に返信(れちりんさんの記事)
> 上記でうまくいったのですが、このForm1とForm2に分けた意図は、
> 後で見やすいよう、できるだけForm1における記述を少なくしたいためなのです。

それって、カプセル化の概念を根底から覆してませんか...?
返信ありがとうございます!!

カプセル化についていろいろ調べてみました。
いろいろクラスを分けて、そのクラスごとに作業を明確化したほうが
いいかと思ったのですが、少し分散しすぎてたかもしれません・・・

ボタンテキスト出力は、同じクラスで出力するほうが、はるかに簡単でC#の理念?と
あっているらしいということがわかりましたので、今回そちらで行きたいと思います。

ありがとうございました。

ところで、C言語ではあちこち処理場所を変更してプログラムを作ることは多いのでしょうか?
仕事上、Cを元にしたらしいプログラムのようなもの?を触ることがあるのですが、
処理場所をあちこち分散してたので、C#もそのようにしようと思ったのですが・・・

あと、カプセル化を考えるとForm1にmainがあると異様にプログラムがながくなったり
する傾向にないでしょうか? そうすると、後でわかりにくくなるような気がするの
ですが・・・ 作者以外はいいかもしれないですが・・・
ここまで来ると質問ないようが変わりますよね? すいません。よろしければ返答ください
ありがとうございました!
解決済み!
■No11071に返信(れちりんさんの記事)
> Form1にmainがあると異様にプログラムがながくなったりする傾向にないでしょうか?
それはないですよね。
エントリポイントですることってそんなに多いですか。
多いにしても、静的なメソッドだし。
インスタンスに特化しない処理は静的メソッドでやりますよね。
返信ありがとうございます!

たぶんカプセル化の考え方とC#ではなくプログラムの作り方がよくわかっていないため
このような返答になってしまってるのだと思います。

またいろいろ質問させていただくことがあると思います。よろしくお願いします。

■No11074に返信(はいこーんさんの記事)
> ■No11071に返信(れちりんさんの記事)
>>Form1にmainがあると異様にプログラムがながくなったりする傾向にないでしょうか?
> それはないですよね。
> エントリポイントですることってそんなに多いですか。
> 多いにしても、静的なメソッドだし。
> インスタンスに特化しない処理は静的メソッドでやりますよね。
あ、とりあえず解決済みにさせて頂きます。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板