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


むつかしい  2008-12-08 06:00:15  No: 141014

こんにちは

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 10:54:44  No: 141015

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 20:56:16  No: 141016

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


やじゅ  2008-12-08 21:41:13  No: 141017

デザイナの使い方

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


むつかしい  2008-12-08 21:52:15  No: 141018

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

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

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


かんたん  2008-12-08 23:57:27  No: 141020

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

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

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

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

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


Dental  2008-12-09 01:13:45  No: 141021

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

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

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

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

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

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

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


むつかしい  2008-12-09 01:31:48  No: 141022

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加