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

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

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

Re[4]: 別フォームでの変数継承


(過去ログ 54 を表示中)

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

■30556 / inTopicNo.1)  別フォームでの変数継承
  
□投稿者/ 渡辺 (1回)-(2008/12/26(Fri) 13:13:51)

分類:[C#] 

2008/12/26(Fri) 13:22:23 編集(投稿者)

こんにちは。例えばA,BというFormがあり、BからAのある変数の値を取得する方法はありますか?
分かる方教えてください。
引用返信 編集キー/
■30557 / inTopicNo.2)  Re[1]: 別フォームでの変数継承
□投稿者/ ひとこと (4回)-(2008/12/26(Fri) 13:49:02)
継承じゃなくて参照したいだけだよね。
引用返信 編集キー/
■30559 / inTopicNo.3)  Re[1]: 別フォームでの変数継承
□投稿者/ はつね (908回)-(2008/12/26(Fri) 14:00:56)
はつね さんの Web サイト
No30556 (渡辺 さん) に返信
> こんにちは。例えばA,BというFormがあり、BからAのある変数の値を取得する方法はありますか?

AというフォームにPublicプロパティを用意して、Bから参照する。
つまり、BからAを呼び出していないと使えない。

BというフォームにPublicプロパティを用意して、Aから設定する。
つまり、AからBを呼び出していないと使えない。

フォームの親子関係により、参照するのか設定するのかが変わります。
でも方法はPublicプロパティのように値をやるとりする口を用意するという点では一緒です。


引用返信 編集キー/
■30560 / inTopicNo.4)  Re[1]: 別フォームでの変数継承
□投稿者/ .SHO (522回)-(2008/12/26(Fri) 14:06:14)
No30556 (渡辺 さん) に返信

> BからAのある変数の値を取得する方法はありますか?

Bが動いている間、そのAの変数が変化せず、参照するだけでいいのなら
Bのコンストラクタで受けとればいいです。
引用返信 編集キー/
■30563 / inTopicNo.5)  Re[2]: 別フォームでの変数継承
□投稿者/ MOTO (3回)-(2008/12/26(Fri) 14:56:23)
MOTO さんの Web サイト
No30556 (渡辺 さん) に返信
> こんにちは。例えばA,BというFormがあり、BからAのある変数の値を取得する方法はありますか?

こんにちは、渡辺さん。
すでに皆様から有益な回答が記載されておりますが…

Formといえどもクラスであることに変わりはありません。
ですので、FormAの変数をFormBから参照したい場合は、
FormAの変数をpublicにしてあげればFormBから参照することが可能です。

例えば、
 ・FormB:FormAを呼び出す画面(FormAを表示するためのボタンを有する)
 ・FormA:FormBから呼び出される画面(テキストボックスを有する)
という前提で、以下の動作を実現させたい場合、
 ・FormBのボタンを押下してFormAが表示された後に、
   FormAのテキストボックスに入力されていた値(を格納した変数)を
   FormBから参照して表示する
以下のようなソースコードで実現することが可能です。

/// <summary>FormAを呼び出す画面</summary>
public partial class FormB : Form
{
    /// <summary>
    /// FormAを表示してFormAのテキストボックスに入力された値を
    /// FormBから取得して表示する
    /// </summary>
    private void button1_Click(object sender, EventArgs e)
    {
        //@FormAをモーダルダイアログとして表示
        FormA formA = new FormA();
        formA.ShowDialog(this);

        //BFormAの変数の値を取得して表示
        string formAValue = formA.TextBoxValue;
        MessageBox.Show(this, formAValue);
    }
}

/// <summary>FormBから呼び出される画面</summary>
public partial class FormA : Form
{
    /// <summary>FormBに公開する変数</summary>
    public string TextBoxValue = null;

    /// <summary>FormAが閉じる際に実行されるイベント</summary>
    private void FormA_FormClosed(object sender, FormClosedEventArgs e)
    {
        //A画面が閉じる際にテキストボックスの値を変数に格納
        TextBoxValue = textBox1.Text;
    }
}

上記のように、FormAの変数"TextBoxValue"をpublicにすることにより、
FormBから上記変数を参照することが可能です(ホントはプロパティで
公開したほうがいいのでしょうが、簡略化のためあえてメンバを直接
公開しています)。見当違いな解説でしたらすみません…m(;_ _)m

ちなみに、渡辺さんのおっしゃっているForm"A"と"B"が
それぞれ別ExeのFormである場合は、上記のように簡単な方法で
実現することはできませんが…( ̄ー ̄;

引用返信 編集キー/
■30564 / inTopicNo.6)  Re[3]: 別フォームでの変数継承
□投稿者/ 渡辺 (2回)-(2008/12/26(Fri) 14:57:36)
皆さん、分かりやすい回答ありがとうございました。

引用返信 編集キー/
■30565 / inTopicNo.7)  Re[4]: 別フォームでの変数継承
□投稿者/ 渡辺 (3回)-(2008/12/26(Fri) 14:57:41)
2008/12/26(Fri) 14:58:57 編集(投稿者)
2008/12/26(Fri) 14:58:52 編集(投稿者)

No30564 (渡辺 さん) に返信
> 皆さん、分かりやすい回答ありがとうございました。
>
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -