- - PR -
クリックされたボタンの判断
1|2|3
次のページへ»
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-06-21 14:59
こんにちは。
VB.NET2005とAccess2003を使用して簡単なソフトを製作しています。 AccessのテーブルにはID、名前、画像、説明を入れています。 VBへ呼び出し、名前・画像・説明文を連結させて表示させています。 現在、Button1をクリックすると次のレコードに移るようになっています。 (順番はレコードのID(オートナンバー)順です。) レコードを順番に表示していくのではなく、レコードと同じだけのボタンを配置し、 ボタンに対応したレコードを表示できるようにしたいと思っています。 例)”あ”というボタンをクリック→”あ”の画像、説明文を表示 課題は山積みなのですが・・・まず、 複数あるボタンのうち、どのボタンがクリックされたのかを判断する方法 についてご教授いただきたいと思っています。 どなたか、分かる方いましたらよろしくお願いします。 VBもAccessも初心者なため、説明が足らない部分もあると思いますので、ありましたらご指摘お願いします。 | ||||
|
投稿日時: 2008-06-21 15:06
Clickイベントのsenderが、押されたボタンのインスタンスですよ
| ||||
|
投稿日時: 2008-06-21 15:44
こんにちは。
DOBON.NET さんの コントロールを実行時に作成する や 実行時にイベントハンドラを追加する や VB.NETでキャストを行う が参考になると思います。 _________________ 上本亮介 (ue) @ わんくま同盟 Microsoft MVP for VSTO (Jul 2008 - Jun 2009) Hello Another World! .NET 勉強会 / ヒーロー島 | ||||
|
投稿日時: 2008-06-21 16:20
ども。
.NET開発ですよね、であればCommandNameを使うのはどうでしょうか。 求めているのと違う場合は、ごめんなさい。 <asp:Button 〜省略〜 onCommand="Button1_click" CommandName="Buttion1" /> と組み込むと、サーバーサイドの方でコマンド名を取得できます。 protected void Button1_click(object sender, CommandEventArgs event) { Session["ButtonName"] = event.CommandName.ToString(); } | ||||
|
投稿日時: 2008-06-21 22:54
質問者さんの質問は Web アプリケーション開発ではないと思います。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2008-06-22 00:34
遅くなりました・・・。さっそくご返答いただきありがとうございます!
Kazukiさん こんばんは。 Clickイベントのsenderが、押されたボタンのインスタンスですよ ということは Private Sub Button1_Click(・・省略・・) Handles Button1.Click,Button2.Click,・・・ というように、Handles以下に配置したボタンまでを書き、さらに処理を書いていくということでしょうか? ***** ueさん こんばんは。 DOBON.NET さんにはたくさんサンプルもあり、参考にしていきたいと思います。 ありがとうございます。 今、提示していただいたページや近そうなものを見ています! ***** Liquid_Forceさん こんばんは。 返答ありがとうございました。しかしながら、じゃんぬねっとさんのご指摘通り、 今回Webアプリの開発ではありません。 説明不足ですみませんでした。 **** じゃんぬねっとさん こんばんは。 ご指摘ありがとうございました。 | ||||
|
投稿日時: 2008-06-22 13:43
もちろんこれでもよいのですが、
ご質問を読む限りレコード数分のボタンが必要なのですよね。 ということはボタンの数も可変ということだと思います。 そうであれば AddHandler を使って動的に追加する形になると思います。 ところで気になったのですが、ボタンをレコード数分、追加するような形だと、 大量のレコードのときにリソースをたくさん使いますし、パフォーマンスにも影響が出そうです。 DataGridView のようなグリッド系のコントロールを使う方がよい気がします。 | ||||
|
投稿日時: 2008-06-22 23:39
テッテさん、こんばんは。
ご返答ありがとうございます! レコードは50音・アルファベット・数字と入れるものは決めているため、 基本的にレコードの追加・削除はないものとしています。 説明不足ですみませんせした。 前の段階では、データベースがイマイチ分からなかったため、 例)”あ”というボタンをクリック→”あ”の画像 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click PictureBox1.Visible = True PictureBox1.Image = My.Resources.あ Label1.Text = "あ" End Sub と書いていました(これを50音分)。やりたいことと一致してはいるのですが、画像を リソースに入れていたため、実行だけでもとても時間がかかっていました。 そこで、テーブルを使用しようと思ったのです。 教えていただいたページや他のサイトさんを見て、ボタンの数が可変しない場合でもAddHandlerを使って表示せることができないか考えが浮びました・・・ Dim kana(50) as Button ’Form1.Loadで Dim i as Integer kana(0) = Button1 kana(1) = Button2 : : For i 0 To 50 AddHandler kana(i).click, AddressOf MyClick Next *** Private Sub MyClick(ByVal sender As System.Object, ByVal e As System.EventArgs) 'レコードを呼出て、表示させる処理 End Sub この場合、インデックスを使用してButton(i)とレコードを対応させていきたいと考えているのですが・・・・・可能なのでしょうか?(レコードを変数に入れる等) イメージだけですが、とりあえず自分でも書いてみたいと思います。 課題の期限が近いため、同時進行で質問させていただきました。 DataGridViewについても、使ったことがないので調べてみます! 長文失礼しました。 [ メッセージ編集済み 編集者: はる 編集日時 2008-06-22 23:44 ] |
1|2|3
次のページへ»