こんにちは
Formでボタンを作って
表示するまではできたのですが
イベントの発生が できません
ただ 音を鳴らしたいだけなんですが
よろしくお願いします
os XP home Sp3
Microsoft Visual Basic 2008 Express Edition
Public Class Form1
Dim Button1(1) As Button
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Button1(1) = New Button
Button1(1).Top = 100
Button1(1).Width = 100
Button1(1).Height = 100
Button1(1).Left = 100
Controls.Add(Button1(1))
End Sub
Private Sub Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button.Click
Beep()
End Sub
End Class
Button1(1) = New Button
Button1(1).Top = 100
Button1(1).Width = 100
Button1(1).Height = 100
Button1(1).Left = 100
Controls.Add(Button1(1))
このあとに
AddHandler Button1(1).Click, _
AddressOf Button_Click
を追加
Private Sub Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button.Click
の Handles Button.Click を削除して
Private Sub Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
とすれば動く。
#手元にはVB2005しかないのでそれで確認済み
でも、デザイナを使ってボタンを作ればこんなこと考えないでもすむのに・・
さっそくの返事ありがとうございます
デザイナ とは
特別なものなのでしょうか
Form1.vb [デザイン] とタグの表示されてる
ページのことでしょうか
デザイナの使い方
3.ボタンの配置
http://homepage1.nifty.com/rucio/VBNyumon/BEGIN2.htm
すいません
下のようなソフトになったのですが
押したボタンの iの番号を
TextBox2.Text に表示させたいのですが
どうにかなりませんか
Public Class Form1
Dim Button1(4) As Button
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim i
For i = 0 To 4
Button1(i) = New Button
Button1(i).Top = 30 * i
Button1(i).Width = 100
Button1(i).Height = 30
Button1(i).Left = 10
Controls.Add(Button1(i))
AddHandler Button1(i).Click, _
AddressOf Button_Click
Next
End Sub
Private Sub Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
TextBox2.Text = ???????????????????' 押したボタンの Button1(i)の i の部分を表示させたい
Beep()
End Sub
End Class
Button1(i).Left = 10
Button1(i).Tag = i.ToString() ←を追加
TextBox2.Text = DirectCast(sender,Button).Tag
エラーしないプログラムを作ればいい
という方針ならいまのままでもいいけど、
正統派のプログラマに近づくためには
コントロールの配列を作成する
http://dobon.net/vb/dotnet/control/buttonarray.html
をみて現状との差を確認してほしい。
#余計なお世話になるとは思うけど、注釈行(コメント)は
#すべてのステートメントごとにつける(くらいの)心がけで
#プログラムを記述するべき。
#もちろん正しい用語を使って。
#それにより各ステートメントの意味を考えるきっかけにもなるし
#間違いをその段階で発見できる可能性もある。
以下脱線レス。"#"な文に反応するのも何だけど———
> #余計なお世話になるとは思うけど、注釈行(コメント)は
> #すべてのステートメントごとにつける(くらいの)心がけで
> #プログラムを記述するべき。
余計なお世話になるとは思うけど、個人的にはその方針には猛反対。
自分は、ステートメント単位では無く"意味"の単位でつけるべき派。
各ステートメントの動作そのものはコード見れば分かることなので
開発者がそのステートメント(群)に何を求めているのかという
"意味"、"思想"、"意図"、あるいはコードの補足説明といった
コードには表れない情報が記述してあった方が助かる(と思う)。
そしてそれは、必ずしもステートメント単位につく物では無く
"動作"などの固まり単位で付くことの方が多いはず、経験論。
ステートメントごとに付けるべき事も無いとは言わないケド、
通常は複数のステートメント、時にはプロシージャ単位といった
ある程度大きな単位で付くことが多いものかと思われ。
#・・・って書くのは、今メンテしているコードに数多く含まれている
#"i に 0 を代入"とかいう五月蠅いコメントに頭を抱えているから何だけど。
##"レコードの読込位置を先頭に戻す"とか書いてくれりゃ良いのに・・・。
皆さんありがとうございます
かんたんさんのご指摘どうり
現状との差は歴然
ただ・・
コントロールの配列を作成する
http://dobon.net/vb/dotnet/control/buttonarray.html
など ほぼ正解にいきついた場合はいいのですが
少し違った場合などは なかなか理解しにくくつい 皆さんに甘えてしまうしだいであります
今後ともよろしくお願いいたします
ツイート | ![]() |