DOBON.NET DOBON.NETプログラミング掲示板過去ログ

フォームを開いた祭、開く時に使ったボタンなどの名前の取得

環境/言語:[WindowsXP]
分類:[.NET]

こんばんは、質問です。

Form0上にボタンとラベルがたくさんあり、どのボタンを押してもForm1を表示しますが、Form1上のTextBoxに書き込んだ値は、それぞれのボタンの隣のラベルに表示したいんですが、どうしたらいいでしょうか?
私が考えるに、あらかじめボタンの隣のラベル名を「ボタン名+lb」などとしておき、フォームを開いた際、
フォームを開くときに使ったボタン名を取得して+lbしたラベル名のラベルに値を表示できたらいいなと思っております。
できますでしょうか?
■No12464に返信(らっくすさんの記事)

> Form0上にボタンとラベルがたくさんあり、どのボタンを押してもForm1を表示しますが、Form1上のTextBoxに書き込んだ値は、それぞれのボタンの隣のラベルに表示したいんですが、どうしたらいいでしょうか?
> 私が考えるに、あらかじめボタンの隣のラベル名を「ボタン名+lb」などとしておき、フォームを開いた際、
> フォームを開くときに使ったボタン名を取得して+lbしたラベル名のラベルに値を表示できたらいいなと思っております。
> できますでしょうか?



いまいち状況が掴めないのですが、textChangeイベントを使って

labal1.Text = textbox1.Text

ではいけないのですか?
■No12464に返信(らっくすさんの記事)
> こんばんは、質問です。
>
> Form0上にボタンとラベルがたくさんあり、どのボタンを押してもForm1を表示しますが、Form1上のTextBoxに書き込んだ値は、それぞれのボタンの隣のラベルに表示したいんですが、どうしたらいいでしょうか?
> 私が考えるに、あらかじめボタンの隣のラベル名を「ボタン名+lb」などとしておき、フォームを開いた際、
> フォームを開くときに使ったボタン名を取得して+lbしたラベル名のラベルに値を表示できたらいいなと思っております。
> できますでしょうか?

値を書き込むラベルはForm0上にあるということですよね?
らっくすさんのやりたい方法でもできると思います。
どの部分がわかりませんか?
こんにちは、じゃんぬ です。

■No12464に返信(らっくすさんの記事)
> Form0上にボタンとラベルがたくさんあり、どのボタンを押してもForm1を表示しますが、
> Form1上のTextBoxに書き込んだ値は、それぞれのボタンの隣のラベルに表示したいんですが、どうしたらいいでしょうか?

Show メソッドで表示しているのか、ShowDiaglog メソッドで表示しているのかで回答が変わります。
ShowDialog だったら、簡単なのですが...

> 私が考えるに、あらかじめボタンの隣のラベル名を「ボタン名+lb」などとしておき、フォームを開いた際、
> フォームを開くときに使ったボタン名を取得して+lbしたラベル名のラベルに値を表示できたらいいなと思っております。
> できますでしょうか?

コンパイル解決を図るためにも、最初からグループ化して管理しておくか、
表示する際に、そのインスタンスを渡すなどした方がまだ良いでしょう。
多分らっくすさんはちんすこうさんでてっちゃんさんですよね?

意図的かどうかはわからないですが
前の質問が解決しないうちに別名で連続投稿するのはいかがなものかと思いますよ〜

ちなみに「〜する祭」→「〜する際」ですよ〜
2005/08/30(Tue) 10:36:28 編集(投稿者)

■No12470に返信(無名さんの記事)
> 多分らっくすさんはちんすこうさんでてっちゃんさんですよね?
とりあえず、ちんすこう=てっちゃんなのは確かみたいです。
自分で認めてますから。

  ■No12447(てっちゃん)
  お返事ありがとうございます!
  あの、そのフォームを表示するボタンをどうにかひとつにして、
  なおかつ開かれるフォームのラベルなどの値が残されるようなことは無理でしょうか?
  すみません、何度も・・・

  ■No12448(ちんすこう)
  すみません、先ほど違う質問で投稿した祭の名前になってしまいました・・・

> 意図的かどうかはわからないですが
> 前の質問が解決しないうちに別名で連続投稿するのはいかがなものかと思いますよ〜
意図的じゃないと名前は変えられないと思いません?
まあ、マナー違反はマナー違反ですね。
http://dobon.net/vb/bbs/index.html

書き込みのマナーについて
└■全般的な投稿のマナー
 └匿名(通りすがり、初心者などの名前も匿名と同じです)にせず、一貫した名前を使う。

> ちなみに「〜する祭」→「〜する際」ですよ〜
ちんすこう氏も同じ誤植をやってますね。
だから、らっくす氏も同一人物である可能性が高いわけですね。
うーん、納得。
ちんすこう=てっちゃん=らっくすです。
すみません。皆さん本当にご迷惑おかけしました。
次からはこのようなことはしませんのでどうか許してもらえないでしょうか?
管理人さん、ならびに、返信してくださった皆さん本当にすみませんでした。
> Show メソッドで表示しているのか、ShowDiaglog メソッドで表示しているのかで回答が変わります。
> ShowDialog だったら、簡単なのですが...
ShowDialogの時の方法、教えてもらえないでしょうか?
■No12476に返信(ちんすこうさんの記事)
>>Show メソッドで表示しているのか、ShowDiaglog メソッドで表示しているのかで回答が変わります。
>>ShowDialog だったら、簡単なのですが...
> ShowDialogの時の方法、教えてもらえないでしょうか?
>

もう片方のスレでもShowDialogなのですが・・
同じ内容の質問ならどちらかを解決済みにしてスレを絞ってくださいませ。

後、「どこまでできて」「どこがわからない」かも書いて頂ければ
回答もしやすいかと思います。
2005/08/30(Tue) 12:32:58 編集(投稿者)

> もう片方のスレでもShowDialogなのですが・・
> 同じ内容の質問ならどちらかを解決済みにしてスレを絞ってくださいませ。
すみません・・・。解決していましたが、解決マークにチェック入れるの忘れてまして・・・。本当にすみません。

> 後、「どこまでできて」「どこがわからない」かも書いて頂ければ
> 回答もしやすいかと思います。
ラベルとボタンがいっぱいあるフォーム(form0)とそのform0上のどのボタンを押しても、
同じform1が出てくるようにまで設定しております。
あとは、form1が出た際に、form0上のどのボタンを押して、なおかつそのボタン名を、
取得することができれば、押したのボタンの横にあるラベルにForm1上のTEXTBOXの値を
挿入することができそうな気がします。
なので、どうやったら、押したボタンの名前を取得するとこができるか、知りたいところです。
お願いいたします。
■No12481に返信(ちんすこうさんの記事)
> なので、どうやったら、押したボタンの名前を取得するとこができるか、知りたいところです。

ボタンのクリックイベントの引数のsenderをウォッチ等で見てみてください。
何もかも自分で調べずにそうやってずーーーと今まで聞いてますね。
お気楽の方を使うべきだと思いますね。
http://dobon.qp.land.to/bbs/cbbs.cgi
> ボタンのクリックイベントの引数のsenderをウォッチ等で見てみてください。
すみません、VB初めて間もないので、意味がよくわかりません・・・・
今の状態では
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'Form2クラスのインスタンスを作成する
Dim f As New Form4
'Form2を表示する
'ここではモーダルダイアログボックスとして表示する
'オーナーウィンドウにMeを指定する
f.ShowDialog(Me)
'フォームが必要なくなったところで、Disposeを呼び出す
f.Dispose()

End Sub
この一行目にあるsenderのことでしょうか??
あと、ウォッチで見るというのはなにをしたらいいのでしょうか?
■No12483に返信(はいこーんさんの記事)
> 何もかも自分で調べずにそうやってずーーーと今まで聞いてますね。
すみません。一応自分なりにヘルプを参照したり、tipsを見たりして探したのですが、見つからなくて・・・・。
2005/08/30(Tue) 12:59:43 編集(投稿者)

■No12484に返信(ちんすこうさんの記事)
> この一行目にあるsenderのことでしょうか??
そうです。

> あと、ウォッチで見るというのはなにをしたらいいのでしょうか?
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vsdebug/html/vchowusingwatchwindow.asp

以下,意見。
はいこーんさんが仰ってますが,自分で調べていますか?
余計なお世話かもしれませんが,右も左も解らないのであれば,
入門書などを買って,体系的にお勉強される事を強くオススメします。

以下,投稿がかぶったので追記。
>すみません。一応自分なりにヘルプを参照したり、tipsを見たりして探したのですが、見つからなくて・・・・。

どこまで調べて,何が解ったのか書きましょうね…。
> どこまで調べて,何が解ったのか書きましょうね…。
ご返事ありがとうございます。
senderをウォッチで調べてみたところ、
「sender 名前 'sender' は宣言されていません。」
と出てきます・・・
やはり私の知識不足なのでしょうか?
できれば教えてもらえないでしょうか?
余計なお世話かもしれませんが...

一度
http://www.microsoft.com/japan/learning/training/training.aspx?cert=1&cate=1&id=2375
のような講習を受けてみてはどうでしょうか?
手探りで開発するのは大変危険ですので。
> 一度
> http://www.microsoft.com/japan/learning/training/training.aspx?cert=1&cate=1&id=2375
> のような講習を受けてみてはどうでしょうか?
> 手探りで開発するのは大変危険ですので。
そうですか・・・・
やはり私にはむりなのでしょうか。
2005/08/30(Tue) 13:30:59 編集(投稿者)

では、もうちょっと初歩的な質問をしてもいいでしょうか?
dim a as String
a=1
として、
ラベル名1のラベルのテキストに値を入れる際、
aを用いてテキストへの値の代入式を作るにはどうしたらいいでしょうか?
2005/08/30(Tue) 13:42:42 編集(投稿者)

■No12491に返信(ちんすこうさんの記事)
> ラベル名1のラベルのテキストに値を入れる際、
> aを用いてテキストへの値の代入式を作るにはどうしたらいいでしょうか?
それこそ、入門書で調べようレベルです。
サポートセンターじゃないのですから・・・

Label1.Text = "Hoge"

の意味がわからないと?

Dim a As String = "Hoge"
Label1.Text = a

の意味がわからないと?

> では、もうちょっと初歩的な質問をしてもいいでしょうか?
#何が「では」なんだろう?


再度誘導。
http://dobon.qp.land.to/bbs/cbbs.cgi

> Label1.Text = "Hoge"
>
> の意味がわからないと?
それはラベルに"Hoge"って文字を表示します
> Dim a As String = "Hoge"
> Label1.Text = a
>
> の意味がわからないと?
ラベルの値がHogeになる。
これはわかるんですが・・、

abcdってラベルがあるとしますよね?
そこで
dim a as string
a="abcd"
として、
abcdというラベルのテキストにaを用いて値(1234)を入力するとすると、
私の考えでは、
a.text=1234
とか
"a".text=1234
とかになってしまうんですが、
エラーになってしまうんです。
こんなこともできない私ですが・・・
どうか、これだけでも教えてもらえないでしょうか?
すみません。
2005/08/30(Tue) 13:50:50 編集(投稿者)

■No12487に返信(ちんすこうさんの記事)

とりあえず.ボタンの名前は
Ctype(sender, Button).Nameでとれます。

> やはり私の知識不足なのでしょうか?
またまた余計なお世話ですが,
知識不足というより,調べる努力が不足しているのでは。

というより,何か焦っていませんか?
落ち着いて一つ一つの問題を,
じっくり調べていってみてはいかがでしょう。

追記:
senderという変数宣言が有効な範囲内でないと,上に書いたコードは動きません。
こんにちは。

■No12494に返信(ちんすこうさんの記事)
> abcdってラベルがあるとしますよね?
> そこで
> dim a as string
> a="abcd"
> として、
> abcdというラベルのテキストにaを用いて値(1234)を入力するとすると、
> 私の考えでは、
> a.text=1234
> とか
> "a".text=1234
a は String型 の変数ですよね?
String型に text というプロパティはありません。
ですからエラーになります。

abcd という名前のラベルに"abcd"と表示するには、
abcd.Text = "abcd"
となり、String型の変数aを使ってラベルのテキストを設定するのであれば、
abcd.Text = a
となります。
これは、文法ですからそういうものだと覚えるしかありません。


#他の人も指摘されているようですが、入門書を購入されたほうが良いかと思います。
#急がば回れです。頑張ってください。
2005/08/30(Tue) 14:20:08 編集(投稿者)

> abcd という名前のラベルに"abcd"と表示するには、
> abcd.Text = "abcd"
> となり、String型の変数aを使ってラベルのテキストを設定するのであれば、
> abcd.Text = a
> となります。
> これは、文法ですからそういうものだと覚えるしかありません。
なんか、私の書き方がわるかったのかもしれません・・・
私が言いたいのは、
abcdというラベル名に変数aをもちい、
ラベルのテキストの値はなんでもいいのです。だから、
もし、abcdに1234って表示したかったら、
ふつう、
abcd.text="1234"
ですよね?
んで
ここでabcdを変数aにして
dim a as string
a.text="1234"
のようにしたいのです。
ここで、今いろいろと考えてましたところ、
共通モジュールに
Public a as label
で、フォーム上に
a=abcd
a.text="1234"
と書いて今、やってみようと思います。
私がやりたいことわかります??
2005/08/30(Tue) 14:45:05 編集(投稿者)

こんにちは、じゃんぬ です。
"回答" ではなく "解答" です。

■No12498に返信(ちんすこうさんの記事)
> なんか、私の書き方がわるかったのかもしれません・・・
> 私が言いたいのは、
> abcdというラベル名に変数aをもちい、
> ラベルのテキストの値はなんでもいいのです。だから、
> もし、abcdに1234って表示したかったら、
> ふつう、
> abcd.text="1234"
> ですよね?
> んで
> ここでabcdを変数aにして
> dim a as string
> a.text="1234"
> のようにしたいのです。
> ここで、今いろいろと考えてましたところ、
> 共通モジュールに
> Public a as label
> で、フォーム上に
> a=abcd
> a.text="1234"
> と書いて今、やってみようと思います。
> 私がやりたいことわかります??

つまり、abcd という名前の Label コントロールを動的に取得したいってことですね。
だからといって、abcd.Text なんてやっても、
abcd は Label のインスタンスじゃあないですから、ムリだと皆さん言っているのです。
名前からインスタンスを取得できれば問題ないのでしょう。

フォーム内のコントロールを名前で探して取得する
http://jeanne.wankuma.com/tips/form/29-findcontrol.html

> dim a as string
> a.text="1234"

System.String に Text なんてメンバはありません。
たとえ話であるならば、コードは控えた方が良いです。
余計に混乱してしまいますからネ。
3度目の誘導。
http://dobon.qp.land.to/bbs/cbbs.cgi

何で無視しちゃうかなぁ。

> 初めて投稿される方は、必ず「書き込みのマナーについて(05/1/1更新)」をお読みください。
> http://dobon.net/vb/bbs/index.html
> 読むのが面倒、マナーを守りたくないという方は、「お気楽掲示板」へ投稿してください。

後者なんだから「お気楽掲示板」へ投稿した方が良いと再三提案します。
http://dobon.qp.land.to/bbs/cbbs.cgi
2005/08/30(Tue) 15:17:11 編集(投稿者)

まずは落ち着いてください。

・やろうとしていること(何を実現させたいのか)
・できなかったこと(どのようなことをしたか)

について箇条書きで書いてみませんか?

かなり混乱しているようですし。

VB以外でわかる言語(例:COBOLとか)などあれば教えていただけると
たとえ話がしやすいのですが。

#あなたの抱えている問題が解決するといいですね。
すみません。もう一度頭の中を整理してから来ます・・・
> Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
> 'Form2クラスのインスタンスを作成する
> Dim f As New Form4
> 'Form2を表示する
> 'ここではモーダルダイアログボックスとして表示する
> 'オーナーウィンドウにMeを指定する
> f.ShowDialog(Me)
> 'フォームが必要なくなったところで、Disposeを呼び出す
> f.Dispose()
>
> End Sub
> この一行目にあるsenderのことでしょうか??
> あと、ウォッチで見るというのはなにをしたらいいのでしょうか?

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
1 この行でブレークポイントを設定する
2 実行するするとそこで止まる
3 コマンドウインドウで ? sender.name と打ってエンター

例えば
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click,Button2.Click
の場合、
? sender.name を調べると Button1か2どちらが押されたらわかりますね

DOBON.NET | プログラミング道 | プログラミング掲示板