SHOJI's Code
 仕事や趣味で書いた各種言語のプログラミングコード(エクセルVBA,PHP,C/C++/C#,JavaScript等)、その他雑記。
2017.08<<123456789101112131415161718192021222324252627282930>>2017.10
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

前回の記事で書いたコードをもうちょっと進めてみた。


private void prepare(ComboBox cb, TextBox tb, Label lb)
{
decimal factor = 1;
EventHandler fn;

cb.Items.Clear();
for (int i=0;i<items.Length;i++) cb.Items.Add(items[i]);


tb.TextChanged += fn = delegate(object sender, EventArgs e) {
TextBox t = sender as TextBox;
string tt = t.Text.Trim();
decimal num;
if (decimal.TryParse(t.Text, out num)) {
lb.Text = (num * factor).ToString();
}
else if (t.Text!=string.Empty) {
lb.Text = t.Text + " * " + factor.ToString();
}
else {
lb.Text = "-";
}
};

cb.SelectedIndexChanged += delegate(object sender, EventArgs e) {
ComboBox c = sender as ComboBox;
int idx = c.SelectedIndex;
if (idx>=0 && idx<c.Items.Count) {
factor = (c.Items[idx] as Item).Factor;

fn.Invoke(tb, EventArgs.Empty);
}
else {
factor = 1;
}
};
}


ま、別にテキストボックスのTextChangedイベントの中で、コンボボックスのSelectedIndexを調べてFactorの値を取得しても良かったんだけど、いろいろ応用できるかも・・・


2010.7.13 new EventArgs() から EventArgs.Empty に変更

テーマ:プログラミング - ジャンル:コンピュータ
コメント
この記事へのコメント
コメントを投稿する

管理者にだけ表示を許可する
トラックバック
この記事のトラックバックURL
この記事へのトラックバック
copyright © 2004-2006 SHOJI, Powered By FC2ブログ all rights reserved.
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。