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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.92005 の関連記事表示

<< 0 >>
■92005  Re[7]: コンボボックスによる絞り込み
□投稿者/ たかし -(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
    
    
記事No.91943 のレス /過去ログ160より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -