|
皆さんどうもありがとうございます。
いずれも皆さんのご指摘どおりです。
>ぱぱいやんさん
Form2 も単なるクラスで、必要なプロパティを公開するという発想ができていないから、今回のような質問になるのだと感じました。
→ たしかにサンプル等を読むとふむふむと理解したつもりになっても、
実際に自分で書いてみるとよくわからなくなります。
>みぎぬさん
参考URL:
http://dobon.net/vb/dotnet/programing/mysettings.html
もし読んでわからなければ、今はとりあえず気にしない方向でお願いします。
→ ?な箇所もあるので、じっくりと読ませていただきます。
> 倉田 有大 さん
方法多すぎてなんともいえませんが、Formも所詮クラスですので、クラスの基本がわかれば何でも出来ますよー
→ これを機に、ちゃんと理解しておこうと思います。
*****
で、本題についてですが、一応動かすことができました。
たぶん色々な方法があるのかと思いますがとりあえずです。
これは、
επιστημη さんの
「Form2にユーザの入力値を返すメソッドなりプロパティを用意し、
Form1がそれを呼ぶだけじゃなくて?」方法だと私は思っています。
ぱぱいやん さんの
「Form2 と Form1 で同じ設定情報を持ったオブジェクトを共有するという考え方をした方が良いです。」
「設定値を保持する専用のクラスを作るという発想をした方が理解しやすいだろうと」
という点があまり理解できてないので、今の私がかける方法は
↓のパターンくらいになってしまいます。
Form2.cs
//0x00 カウントアップ, 0x01 カウントダウン
public int mode = 0x00;
//textBox1をForm1で取得できるための情報
public string ttBox1
{
get
{
return textBox1.Text;
}
set
{
textBox1.Text = value;
}
}
//textBox2をForm1で取得できるための情報
public string ttBox2
{
get
{
return textBox2.Text;
}
set
{
textBox2.Text = value;
}
}
//textBox3をForm1で取得できるための情報
public string ttBox3
{
get
{
return textBox3.Text;
}
set
{
textBox3.Text = value;
}
}
//カウントアップ側のラジオボタンをチェック
public void radioButton1_CheckedChanged(object sender, EventArgs e)
{
mode = 0x00; //カウントアップ
}
//カウントダウン側のラジオボタンをチェック
public void radioButton2_CheckedChanged(object sender, EventArgs e)
{
mode = 0x01; //カウントダウン
}
Form1.cs
//ツールメニューからForm2を起動する
public void 設定ToolStripMenuItem1_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2();
frm2.ShowDialog();
try
{
set_h = int.Parse(frm2.ttBox1);
}
catch
{ }
try
{
set_m = int.Parse(frm2.ttBox2);
}
catch
{ }
try
{
set_s = int.Parse(frm2.ttBox3);
}
catch { }
if (frm2.mode == 0x00)
{
_mode = 0x00; //Form1側で用意したモードに格納してあげる
MessageBox.Show("カウントアップ"); //debug print
}
else if (frm2.mode == 0x01)
{
_mode = 0x01; //Form1側で用意したモードに格納してあげる
MessageBox.Show("カウントダウン"); //debug print
}
else
{
MessageBox.Show("どちらでもない(わけはない)");
}
}
|