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

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

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

Re[1]: 他クラスのNumericUpDownへ代入


(過去ログ 117 を表示中)

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

■68758 / inTopicNo.1)  他クラスのNumericUpDownへ代入
  
□投稿者/ LAT (4回)-(2013/11/11(Mon) 23:45:44)

分類:[C#] 

Form2のNumericUpDownからForm1のNumericUpDownへ値を代入したいと思っています。
そこで以下のようなプログラムを作ったのですが、コンパイルも実行もできるのですが、値が代入できません。
勿論変数の宣言は事前にint型で行っています。
Form1 form1 = new Form1();
form1.nUD_LR.Value = LR;
form1.nUD_LG.Value = LG;
form1.nUD_LB.Value = LB;


似たようなことをtextBoxで行ったときは、
form1 form1 = new form1();
form1.textBox1.Text = textBox_LP.ToString();
form1.Show();
で問題なくいけました。

両方ともModifiersはPublicになっています。
1つきになるのは、
textのときはToStringをつけていましたが、今回もそのようなものが必要なのですか?
教えてください。
引用返信 編集キー/
■68759 / inTopicNo.2)  Re[1]: 他クラスのNumericUpDownへ代入
□投稿者/ Azulean (236回)-(2013/11/12(Tue) 00:16:07)
2013/11/12(Tue) 00:20:25 編集(投稿者)
No68758 (LAT さん) に返信

どちらのコードも新しく作った Form1 に対して代入しているので、すでに存在している Form1 には反映されません。
TextBox の時にうまくいったのは、Form1 の使い方が違っているからです。コードを見るとわかると思いますが、Show していますよね。

Form2 から存在している Form1 に対して処理をどうしても書きたいのであれば、Form2 に Form1 のインスタンスを渡してください。


class Form2
{
  // 略
  Form1 Form1Instance { get; set; }
  // 略
  private void Test()
  {
    Form1Instance.nUD_LR.Value = LR;
  }
}

// Form1 側
Form2 f = new Form2();
f.Form1Instance = this;
f.ShowDialog();


// 場合によってはこういったプロパティを作らなくても Owner などをキャストすれば手に入ることもある。


なお、個人的にはこれは相互依存なので設計を見直していただきたいところです。


例
・LR などを Form2 のプロパティとして公開する。
・値を更新したいタイミングで Form2 がイベントを発行する。
・Form1 はそのイベントを受けて Form2 のプロパティから値を取得して自分の NumericUpDown に代入する。

引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -