お久しぶりです、お世話になっています。
先日作成した画面では、入力する項目がいっぱいあります。
それで、そこに入力された内容をクラスに落とさなければならないのですが
といちいちやっているのはプログラマーとして恥ずべきことだと気づきました。
なんとかループでぐるんぐるんとお洒落に処理したいです。
コントロールとクラスメンバを連動させるいい方法を教えて下さい。
お願いします。
IDE : Visual C# 2008 Express Edition
OS : Windows XP
[C#] クラスメンバをぐるんぐるんしたい
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: [C#] クラスメンバをぐるんぐるんしたい
入力項目側は配列に出来ないんでしたっけ?
同じコントロールなら出来そうな気がするんですが。
※ C#に詳しくないので断言出来ません。
同じコントロールなら出来そうな気がするんですが。
※ C#に詳しくないので断言出来ません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: [C#] クラスメンバをぐるんぐるんしたい
データバインドしたい,ということでしょうか。
class1のname/pass/commentがプロパティなら,コントロール→モデルプロパティ方向のバインドは仕掛け無しに可能です。
逆方向は,INotifyPropertyChangedが必要になります。
また,検証系 (WinFormsにおけるValidating/Validatedなど。WPFにはイベント無し?) を使う場合にはIDataErrorInfoが必要になります。
# C#で公開メンバーがPascal Caseでないのは違和感……。
ちなみに,Visual Basic 6までのコントロール配列のようなものは,.NET Frameworkには存在しません。
単純な,コントロールの配列は当然作成できるので,InitializeComponentの後にでも初期化コードを書いておけば,配列として利用可能です。
ただ,純粋に同一の意味合いを持つコントロールが複数ある,ということはあまりないと思うので,コントロール配列が本当に解なのかは疑問です。
class1のname/pass/commentがプロパティなら,コントロール→モデルプロパティ方向のバインドは仕掛け無しに可能です。
逆方向は,INotifyPropertyChangedが必要になります。
また,検証系 (WinFormsにおけるValidating/Validatedなど。WPFにはイベント無し?) を使う場合にはIDataErrorInfoが必要になります。
# C#で公開メンバーがPascal Caseでないのは違和感……。
ちなみに,Visual Basic 6までのコントロール配列のようなものは,.NET Frameworkには存在しません。
単純な,コントロールの配列は当然作成できるので,InitializeComponentの後にでも初期化コードを書いておけば,配列として利用可能です。
ただ,純粋に同一の意味合いを持つコントロールが複数ある,ということはあまりないと思うので,コントロール配列が本当に解なのかは疑問です。
オフトピック
- イベントハンドラの共有ならコントロール配列にしなくてもできる
- 特定のプロパティを一気に変えることはデータバインドで可能
- 複数のコントロールを繰り返したいならば,ユーザーコントロールをFlowLayoutPanelに載せるなり,DataRepeater (VB Power Packs) 使うなりすればよく,前者のみ配列化が必要