tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルコンボボックスの項目移動について
記事No911
投稿日: 2004/06/14(Mon) 11:12
投稿者みけ
[OSのVer]:Windows2000    [VBのVer]:VB.NET  

コンボボックスのDropDownStyleプロパティを DropDown にして、
このコンボボックスのKeyPressイベントに、以下のコードを
記述しました。
  
    if e.KeyChar = chr(Keys.Enter) then
        e.Handled = True
        textBox1.Select   '次のコントロールへ
    end if

実行すると、コンボボックスの改行キー押下時にビープ音が
なってしまいます。
DropDownStyleプロパティがDropDown以外では、
ビープ音がならないのですが・・・

どなたか対策方法をご教授いただけないでしょうか?

[ツリー表示へ]
タイトルRe: コンボボックスの項目移動について
記事No912
投稿日: 2004/06/14(Mon) 16:34
投稿者花ちゃん
投稿された状態では、Beep 音は鳴りません(3スタイル共鳴りません)が、
他の処理等の関係等(エラー音等)であれば解りません。

    Private Sub ComboBox1_KeyPress(ByVal sender As Object, _
           ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles ComboBox1.KeyPress
        If e.KeyChar = Chr(Keys.Enter) Then
            e.Handled = True
            TextBox1.Select() '次のコントロールへ
        End If
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, _
                           ByVal e As System.EventArgs) Handles MyBase.Load
        ComboBox1.DropDownStyle = ComboBoxStyle.DropDown
        ComboBox1.Items.Add("あいうえお")
        ComboBox1.Items.Add("かきくけこ")
    End Sub

再現できるコードを投稿して見て下さい。

[ツリー表示へ]
タイトルRe^2: コンボボックスの項目移動について
記事No916
投稿日: 2004/06/14(Mon) 18:44
投稿者みけ
花ちゃんさん、早速のレスありがとうございました。

> 投稿された状態では、Beep 音は鳴りません(3スタイル共鳴りません)が、
> 他の処理等の関係等(エラー音等)であれば解りません。

> 再現できるコードを投稿して見て下さい。

新規フォームでコンボボックスとテキストボックスを貼り付け、
記載したコードを書いているだけなんです。
なのでコンボボックスには、Item が無い状態です。
言葉足らずで申し訳ありませんでした。

[ツリー表示へ]
タイトルRe^3: コンボボックスの項目移動について
記事No917
投稿日: 2004/06/14(Mon) 18:56
投稿者花ちゃん
> 新規フォームでコンボボックスとテキストボックスを貼り付け、
> 記載したコードを書いているだけなんです。
それなら音がでないはずですが(私が投稿したコードがそれですが)

私の投稿したコードではBeep音がしません。
私のコードと同じコードなのか?私のコードを試してどうなのか?

それでもBeep音がでるならそのコードを投稿して貰わないと原因が解らないのでは
投稿された一部のコードも実際に使用されているコードをコピー&ペーストされた
ものではないですよね!

[ツリー表示へ]
タイトルRe^4: コンボボックスの項目移動について
記事No918
投稿日: 2004/06/15(Tue) 09:28
投稿者みけ
[OSのVer]:Windows2000    [VBのVer]:VB.NET 2002  .NET Framework SDK 1.0

検証ありがとうございました。
花ちゃんさんのコードをペーストした結果もビープ音がなりました。
環境の違いなのでしょうか??
こちらでもう少し調べてみます。
ありがとうございました。



 

[ツリー表示へ]
タイトルRe^2: コンボボックスの項目移動について
記事No919
投稿日: 2004/06/15(Tue) 11:35
投稿者るしぇ
[OSのVer]:Windows2000    [VBのVer]:VB.NET2003  
    Private Sub ComboBox1_KeyPress(ByVal sender As Object, _
           ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles ComboBox1.KeyPress
        'If e.KeyChar = Chr(Keys.Enter) Then
        '    e.Handled = True
        '    TextBox1.Select() '次のコントロールへ
        'End If
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, _
                           ByVal e As System.EventArgs) Handles MyBase.Load
        ComboBox1.DropDownStyle = ComboBoxStyle.DropDown
        ComboBox1.Items.Add("あいうえお")
        ComboBox1.Items.Add("かきくけこ")
    End Sub

一応、これで再現できました(?)。
音からするとシステムの『一般の警告音』です。テキストボックスでリターンキー
押下でも鳴ります。ComboBoxStyle.DropDown にするとテキストボックスと同じような
動作をしますのでその辺が影響してるのかと。
対処方法は…
   e.Handled = True
なハズなんですが…うむー。

[ツリー表示へ]
タイトルRe: コンボボックスの項目移動について
記事No922
投稿日: 2004/06/15(Tue) 13:19
投稿者花ちゃん
ちょっと検索して調べて見たのですが、同様の事例が何件かありました。
バージョンが書いてないのと、MSDNの方ではその件の資料がみつかりませんでしたので
原因は解りませんが、対処法は、SystemParametersInfo APIを使用すればBeep音については
解決できます。(確認済み)

hhttp://homepage1.nifty.com/MADIA/vb/vb_bbs2/200308_03080054.html

[ツリー表示へ]
タイトルRe^2: コンボボックスの項目移動について
記事No924
投稿日: 2004/06/15(Tue) 18:52
投稿者みけ
[OSのVer]:Windows2000    [VBのVer]:VB.NET2002

ご回答ありがとうございました。
APIを宣言し、以下のコードを記述したのですが、
やっぱりビープ音が鳴ってしまうのです。

    Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load

        ComboBox1.DropDownStyle = ComboBoxStyle.DropDown

        Call SystemParametersInfo(SPI_SETBEEP, _
Convert.ToUInt32(0), Nothing, Convert.ToUInt32(0))

    End Sub

    Private Sub cbo_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) _
                                Handles ComboBox1.KeyPress
        If e.KeyChar = Chr(Keys.Enter) Then
            e.Handled = True
            TextBox1.Select()
        End If
    End Sub

[ツリー表示へ]
タイトルRe^3: コンボボックスの項目移動について
記事No925
投稿日: 2004/06/15(Tue) 20:25
投稿者花ちゃん
失礼ですが、APIの宣言の部分は問題ないのでしょうか?

Beep 音事態の設定を無効にしてしまうので、Microsoft.VisualBasic.Beep() を実行
しても鳴らなくなるはずですが、e.Handled = True も必要ないし、TextBox 上でも鳴らなく
なってしまうはずですが。

APIを実行後下記を実行してBeepが鳴りますか。
(又は TextBox 上で Enter でも同じですが。)
鳴れば、私には解りません。
鳴らなければ、Beep音ではなく、エラー音等かも知れませんが?

    Private Sub Button1_Click(ByVal sender As System.Object, _
                              ByVal e As System.EventArgs) Handles Button1.Click
       Microsoft.VisualBasic.Beep()
    End Sub

[ツリー表示へ]
タイトルRe^4: コンボボックスの項目移動について
記事No926
投稿日: 2004/06/16(Wed) 10:16
投稿者みけ
[OSのVer]:Windows    [VBのVer]:VB.NET  

教えていただいたリンク先のPreProcessMessageをオーバーライドする
方法でうまくいきました。(ただし、コンボボックスは派生クラスで)
ありがとうございました。大変お手数をおかけしました。

[ツリー表示へ]