C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

■92005 / 7階層)  コンボボックスによる絞り込み
□投稿者/ たかし (6回)-(2019/08/16(Fri) 19:30:59)
まずは魔界の仮面弁士さま、 WebSurferさま、
お付き合いいただいてどうもありがとうございました。
お二人からご紹介のあったサイトはゆっくり読んで勉強させていただきます。
やはりVB.NETで「コンボボックスによる絞り込み」は出来ないか、
少なくとも「途方もなく難しい」ということが分かりました。
ウエブを探しても記事がないというのがその何よりの証拠だと思います。

>> 絞り込むタイミングとしてはComboBox2のMouseDownイベントがいいのではないかと。

>MouseDown が発生するとは限りませんので、それを前提として
>設計するのは避けたほうが良いでしょう。

>たとえば、Tab キーによってフォーカス移動してくることもありますよね。
>ComboBox がアクティブになっている状態から、
>ドロップダウンさせないまま、上下矢印キーで項目が変更されたり、
>アイテム名の頭文字を入力して候補を選択したり、
>[F4] キーあるいは、[Alt]+[下]キーでドロップダウンされることもあります。

なるほど。ドロップダウンボタンがあれば、普通の人ならば必ず押すものだと思っていましたが、
確かに上級者の場合、マウスなしでTabKeyを使うことが多いかも知れませんね。
となるとやはりComboBox2_Enterイベントでしょうかね?

最後に「次善の策」として考えていたDataGridViewを使うのが手っ取り早いと理解いたしました。
拙作のコードを書いて、お二人へのお礼とさせていただきたいと思います。
フォームにTabPageを2つ作り1ページ目に部署コードComboBox、.部署名TextBox、社員コードComboBox、
社員名TextBoxを置きます。
2ページ目にStd_社員DataGridViewとTbl_部署DataGridViewを置いて、
それぞれにToolStripを付けました。以下がそのコードです。

Public Class 社員情報

    Private Sub 社員情報_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Me.Tbl_部署TableAdapter.Fill(Me.ComboBoxSampleDataSet.tbl_部署)
        Me.Qry_社員TableAdapter.Fill(Me.ComboBoxSampleDataSet.qry_社員)
        Me.部署コードComboBox.Text = ""
        Me.部署名TextBox.Text = ""
        Me.社員コードComboBox.Text = ""
        Me.社員名TextBox.Text = ""
    End Sub

    Private Sub 部署コードComboBox_TextChanged(sender As Object, e As EventArgs) Handles 部署コードComboBox.TextChanged
        部署コードToolStripTextBox.Text = Me.部署コードComboBox.Text
        Try
            Me.Std_社員TableAdapter.Fill(Me.ComboBoxSampleDataSet.std_社員, New System.Nullable(Of Integer)(CType(社員コードToolStripTextBox.Text, Integer)))
        Catch ex As System.Exception
        End Try
    End Sub

    Private Sub 社員コードComboBox_Enter(sender As Object, e As EventArgs) Handles 社員コードComboBox.Enter
        If Me.部署コードComboBox.Text = "" Then
            Me.社員名TextBox.Text = ""
            MsgBox("部門コードを入力してください。")
            Me.部署コードComboBox.Select()
        Else
            Me.TabPage.SelectedIndex = 1
            Me.Std_社員DataGridView.Visible = True
        End If
    End Sub

   '*********************************************************************************************** 
   'タブインデックスを選択したときのイベント
   '***********************************************************************************************

    Private Sub TabTest_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TabPage.SelectedIndexChanged
        Select Case Me.TabPage.SelectedIndex'タブを選択した時のイベント
            Case 0
            Case 1
                If Me.部署コードComboBox.Text = "" Then
                    Me.Std_社員DataGridView.Visible = False
                    Me.社員コードToolStripTextBox.Text = Me.社員コードComboBox.Text
                    Me.社員名ToolStripTextBox.Text = Me.社員名TextBox.Text
                Else
                    Me.Std_社員DataGridView.Visible = True
                    Try
                        Me.Std_社員TableAdapter.Fill(Me.ComboBoxSampleDataSet.std_社員, New System.Nullable(Of Integer)(CType(部署コードToolStripTextBox.Text, Integer)))
                    Catch ex As System.Exception
                        'System.Windows.Forms.MessageBox.Show(ex.Message)'メッセージは出さない
                    End Try
                End If
                If Me.社員コードComboBox.Text = "" Then
                    Me.Std_社員DataGridView.Visible = False
                End If
                Me.部署コードToolStripTextBox.Text = Me.部署コードComboBox.Text
                Me.部署名ToolStripTextBox.Text = Me.部署名TextBox.Text
                Me.社員コードToolStripTextBox.Text = Me.社員コードComboBox.Text
                Me.社員名ToolStripTextBox.Text = Me.社員名TextBox.Text
            Case 2
        End Select
    End Sub

    Private Sub Std_社員DataGridView_CellDoubleClick(sender As Object, e As DataGridViewCellEventArgs) Handles Std_社員DataGridView.CellDoubleClick
        Dim r As DataGridViewRow = Me.Std_社員DataGridView.CurrentRow
        Me.社員コードComboBox.Text = r.Cells("DataGridViewTextBoxColumn8").Value
        MsgBox("入力しました。")
        Me.TabPage.SelectedIndex = 0
    End Sub

    Private Sub クリアButton_Click(sender As Object, e As EventArgs) Handles クリアButton.Click
        Me.部署コードComboBox.Text = ""
        Me.部署名TextBox.Text = ""
        Me.社員コードComboBox.Text = ""
        Me.社員名TextBox.Text = ""
    End Sub

End Class


編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←Re[6]: コンボボックスによる絞り込み /WebSurfer →Re[8]: コンボボックスによる絞り込み /たかし
→Re[8]: コンボボックスによる絞り込み /WebSurfer
 
上記関連ツリー

コンボボックスによる絞り込み / たかし (19/08/12(Mon) 18:23) #91943
Re[1]: コンボボックスによる絞り込み / 魔界の仮面弁士 (19/08/12(Mon) 23:30) #91945
  └ Re[2]: コンボボックスによる絞り込み / たかし (19/08/15(Thu) 15:44) #91972
    ├ Re[3]: コンボボックスによる絞り込み / WebSurfer (19/08/15(Thu) 16:48) #91974
    └ Re[3]: コンボボックスによる絞り込み / 魔界の仮面弁士 (19/08/15(Thu) 16:45) #91973
      └ Re[4]: コンボボックスによる絞り込み / たかし (19/08/16(Fri) 09:06) #91988
        ├ Re[5]: コンボボックスによる絞り込み / 魔界の仮面弁士 (19/08/16(Fri) 10:24) #91991
        ├ Re[5]: コンボボックスによる絞り込み / WebSurfer (19/08/16(Fri) 10:15) #91989
        ├ Re[5]: コンボボックスによる絞り込み / WebSurfer (19/08/16(Fri) 10:21) #91990
        ├ Re[5]: コンボボックスによる絞り込み / WebSurfer (19/08/16(Fri) 12:20) #91999
        │└ Re[6]: コンボボックスによる絞り込み / WebSurfer (19/08/16(Fri) 12:40) #92001
        │  └ コンボボックスによる絞り込み / たかし (19/08/16(Fri) 19:30) #92005 ←Now
        │    ├ Re[8]: コンボボックスによる絞り込み / たかし (19/08/17(Sat) 08:04) #92006
        │    └ Re[8]: コンボボックスによる絞り込み / WebSurfer (19/08/17(Sat) 10:43) #92007
        │      └ Re[9]: コンボボックスによる絞り込み / たかし (19/08/18(Sun) 09:13) #92018
        │        ├ Re[10]: コンボボックスによる絞り込み / WebSurfer (19/08/18(Sun) 10:22) #92019
        │        ├ Re[10]: コンボボックスによる絞り込み / WebSurfer (19/08/18(Sun) 10:55) #92020
        │        └ Re[10]: コンボボックスによる絞り込み / WebSurfer (19/08/18(Sun) 11:45) #92021
        │          └ Re[11]: コンボボックスによる絞り込み / たかし (19/08/18(Sun) 15:57) #92022
        │            ├ Re[12]: コンボボックスによる絞り込み / たかし (19/08/18(Sun) 16:36) #92023
        │            └ Re[12]: コンボボックスによる絞り込み / WebSurfer (19/08/18(Sun) 18:16) #92024
        │              └ Re[13]: コンボボックスによる絞り込み / たかし (19/08/18(Sun) 19:03) #92025
        │                ├ Re[14]: コンボボックスによる絞り込み / WebSurfer (19/08/18(Sun) 22:14) #92031
        │                │└ Re[15]: コンボボックスによる絞り込み / たかし (19/08/19(Mon) 17:05) #92036
        │                │  └ Re[16]: コンボボックスによる絞り込み / WebSurfer (19/08/19(Mon) 18:36) #92037
        │                └ Re[14]: コンボボックスによる絞り込み / WebSurfer (19/08/22(Thu) 15:02) #92065
        └ Re[5]: コンボボックスによる絞り込み / 大谷刑部 (19/08/20(Tue) 10:01) #92040
          └ Re[6]: コンボボックスによる絞り込み / たかし (19/09/15(Sun) 15:38) #92368 解決済み
            └ Re[7]: コンボボックスによる絞り込み / WebSurfer (19/09/15(Sun) 22:37) #92369
              └ Re[8]: コンボボックスによる絞り込み / たかし (19/09/16(Mon) 20:15) #92372
                ├ Re[9]: コンボボックスによる絞り込み / WebSurfer (19/09/16(Mon) 20:59) #92373
                │└ Re[10]: コンボボックスによる絞り込み / キングダム (19/09/16(Mon) 21:31) #92374
                │  ├ Re[11]: コンボボックスによる絞り込み / キングダム (19/09/16(Mon) 21:33) #92375
                │  └ Re[11]: コンボボックスによる絞り込み / 大谷刑部 (19/09/17(Tue) 12:40) #92380 解決済み
                ├ Re[9]: コンボボックスによる絞り込み / WebSurfer (19/09/19(Thu) 20:26) #92392
                │└ Re[10]: コンボボックスによる絞り込み / 大谷刑部 (19/09/25(Wed) 11:11) #92427 解決済み
                └ Re[9]: コンボボックスによる絞り込み / WebSurfer (19/09/25(Wed) 19:07) #92438
                  └ Re[10]: コンボボックスによる絞り込み / NC (19/09/27(Fri) 19:04) #92462 解決済み
                    └ Re[11]: コンボボックスによる絞り込み / WebSurfer (19/09/27(Fri) 20:39) #92463
                      └ Re[12]: コンボボックスによる絞り込み / Ywaiwai (19/10/01(Tue) 14:37) #92507 解決済み
                        └ Re[13]: コンボボックスによる絞り込み / WebSurfer (19/10/01(Tue) 18:16) #92516
                          └ Re[14]: コンボボックスによる絞り込み / WebSurfer (19/10/03(Thu) 12:38) #92539 解決済み

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信