- - PR -
C# 他のフォームからコントロールの操作
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-07-21 16:31
はじめまして。
ほんとに初心者で申し訳ないですが 教えて頂ければと思い投稿しました。 Form1にtext1〜text100が存在します。 そのtext1からtext100のクリック時のイベントで class1に移動し、どのテキストがクリックされたかわかるように 配列[1]にtext1ならtext1(テキスト名)、配列[2]にtext2ならtext2(テキスト名) を入れます。 その後サブフォームが開きボタン1が選択されると class1の中で配列に格納されたテキスト名を取り出し そのテキストに対して選択されたボタンのCaptionを入れる。 と言う動作を行いたいのですが。 Accessで言うと Global SiControl(100) As Control でControlの宣言をして Set SiControl(1) = Forms![Form1]![Text1] という形をとれば SiControl(1).Caption = "Caption" で別のフォーム内のテキストの操作が出来るのですが C#ではどのようにしたら 実現出来るのでしょうか?? ご理解頂けるか分かりませんが 教えて頂ければ幸いです。 | ||||||||
|
投稿日時: 2005-07-21 16:41
TextBox.Clickイベントに結び付けられているイベントハンドラ(おそらくTextBoxXX_Click()というメソッド)の引数のsenderというのがクリックされたTextBoxです。
string caption = ShowSubForm(); ((TextBox)sender).Text = caption; でどうです? ShowSubForm()ってのがSubFormを表示して、その押されたボタンのキャプションを返すメソッドです。 | ||||||||
|
投稿日時: 2005-07-21 17:27
早速のお返事ありがとうございます。
string caption = ShowSubForm(); ((TextBox)sender).Text = caption; はクラスの中で記述するのでしょうか? すいません。 流れとしましては @Form1のtext1〜text100をクリックした際にClassを呼び出す。 AClassの中で配列の中へ選択されたテキスト分@のテキスト名を代入する Bその後ClassよりForm2(サブフォオーム)を起動する。 CForm2にてボタンの選択がされたらAに戻り配列に格納されたテキスト全部に Captionを代入する です。 この際@からAにどのようにしてテキスト名を渡して配列に代入し その後配列から出してどのようにForm1のテキストに値を代入するかです。 本当に知識が無くて申し訳ありません。 3日ほど調べましたが 知識不足のせいか当てはまるものがありませんでした。 | ||||||||
|
投稿日時: 2005-07-21 17:54
私の提示したソースはTextBoxXX_Click()みたいな名前のメソッドの中に書いてください。
"Classを呼び出す"ことは目的ですか?手段ですか? "配列の中へテキスト名を代入"するのは目的ですか?手段ですか? TextBoxのTextプロパティにForm2で押されたButtonのTextの値を代入することは目的と受け取りましたので、私はその方法しか提示していません。 クリックしたTextBox全てのTextを変更するなら、配列やコレクションでそのTextBox達への参照を持っている必要がありますね。 TextBox[] とか Arraylist とか使ってみてください。 | ||||||||
|
投稿日時: 2005-07-21 17:59
一旦、「クラス」とか「配列」などの実装手段を考えずに
やりたいことを整理して書いてみるといいかもしれません。 #なんとなく、「Access でこうやっていた」という考えに #引きずられているような気がします。 | ||||||||
|
投稿日時: 2005-07-21 18:05
一郎さん、にしざきさんありがとうございます。
ずっとAccessやVB6での開発だった為 急にC#の開発になったら 使い勝手が ???の世界になってしまいました。 整理してみます。 頑張ります。 又分からない時は質問すると思いますが 付き合って下さい。 | ||||||||
|
投稿日時: 2005-07-21 18:52
うーん、言葉が足らないと思います。
コントロールの配列として存在しているという記述が一切ありません。 ベタにあると普通は思ってしまいそうなところです。
これの意味を感じ取れる人は多分いないと思います。 自分はわかるからと言って暗黙しないで、明示化して欲しいです。 class1 云々はおいておいて、コントロールの配列で、 イベント駆動の元となったコントロールが何であるか知りたいだけなのでは? class1 は余計な情報だと思います。 そもそも、コントロールは Form に隠蔽化されているべきなので、 Form 外に出したりすることは、カプセル化の概念を壊します。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |
1