作ったボタンで 音を鳴らすには


むつかしい  2008-12-07 21:00:15  No: 141014  IP: 192.*.*.*

こんにちは

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

編集 削除
かんたん  2008-12-08 01:54:44  No: 141015  IP: 192.*.*.*

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しかないのでそれで確認済み

でも、デザイナを使ってボタンを作ればこんなこと考えないでもすむのに・・

編集 削除
むつかしい  2008-12-08 11:56:16  No: 141016  IP: 192.*.*.*

さっそくの返事ありがとうございます
デザイナ  とは
特別なものなのでしょうか
Form1.vb [デザイン] とタグの表示されてる
ページのことでしょうか

編集 削除
やじゅ  2008-12-08 12:41:13  No: 141017  IP: 192.*.*.*

デザイナの使い方

3.ボタンの配置
http://homepage1.nifty.com/rucio/VBNyumon/BEGIN2.htm

編集 削除
むつかしい  2008-12-08 12:52:15  No: 141018  IP: 192.*.*.*

すいません
下のようなソフトになったのですが
押したボタンの  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

編集 削除
やじゅ  2008-12-08 13:58:11  No: 141019  IP: 192.*.*.*

Button1(i).Left = 10
Button1(i).Tag = i.ToString()  ←を追加

TextBox2.Text = DirectCast(sender,Button).Tag

編集 削除
かんたん  2008-12-08 14:57:27  No: 141020  IP: 192.*.*.*

エラーしないプログラムを作ればいい

という方針ならいまのままでもいいけど、
正統派のプログラマに近づくためには

コントロールの配列を作成する
http://dobon.net/vb/dotnet/control/buttonarray.html

をみて現状との差を確認してほしい。

#余計なお世話になるとは思うけど、注釈行(コメント)は
#すべてのステートメントごとにつける(くらいの)心がけで
#プログラムを記述するべき。
#もちろん正しい用語を使って。
#それにより各ステートメントの意味を考えるきっかけにもなるし
#間違いをその段階で発見できる可能性もある。

編集 削除
Dental  2008-12-08 16:13:45  No: 141021  IP: 192.*.*.*

以下脱線レス。"#"な文に反応するのも何だけど———

> #余計なお世話になるとは思うけど、注釈行(コメント)は
> #すべてのステートメントごとにつける(くらいの)心がけで
> #プログラムを記述するべき。

余計なお世話になるとは思うけど、個人的にはその方針には猛反対。
自分は、ステートメント単位では無く"意味"の単位でつけるべき派。

各ステートメントの動作そのものはコード見れば分かることなので
開発者がそのステートメント(群)に何を求めているのかという
"意味"、"思想"、"意図"、あるいはコードの補足説明といった
コードには表れない情報が記述してあった方が助かる(と思う)。

そしてそれは、必ずしもステートメント単位につく物では無く
"動作"などの固まり単位で付くことの方が多いはず、経験論。

ステートメントごとに付けるべき事も無いとは言わないケド、
通常は複数のステートメント、時にはプロシージャ単位といった
ある程度大きな単位で付くことが多いものかと思われ。

#・・・って書くのは、今メンテしているコードに数多く含まれている
#"i に 0 を代入"とかいう五月蠅いコメントに頭を抱えているから何だけど。
##"レコードの読込位置を先頭に戻す"とか書いてくれりゃ良いのに・・・。

編集 削除
むつかしい  2008-12-08 16:31:48  No: 141022  IP: 192.*.*.*

皆さんありがとうございます
かんたんさんのご指摘どうり
現状との差は歴然
ただ・・
コントロールの配列を作成する
http://dobon.net/vb/dotnet/control/buttonarray.html
など  ほぼ正解にいきついた場合はいいのですが
少し違った場合などは  なかなか理解しにくくつい  皆さんに甘えてしまうしだいであります
今後ともよろしくお願いいたします

編集 削除