DOBON.NETプログラミング道掲示板
(現在 過去ログ1 を表示中)

[ 最新記事及び返信フォームをトピックトップへ ]

■33191 / inTopicNo.1)  DataGridViewでファンクションキー押下のイベントの動作がPCによる異なる
  
□投稿者/ Hassy 一般人(1回)-(2015/11/19(Thu) 20:35:47)
  • アイコン環境/言語:[VB.NET2013、Windows7Pro] 
    分類:[.NET] 

    2015/11/20(Fri) 07:13:35 編集(投稿者)

    お世話になっております。ハシと申します。
    はじめて掲示板に投稿させていただきます。ご教授の程、よろしくお願い致します。

    DataGridViewに複数行を表示させ、行でF1キーを押すとセル上にオートコンプリートのリストを表示するプログラムを作りました。

    私のPC(開発環境あり、Windows7Pro)、家にあるもう1台のPC(開発環境なし、Windows7Pro)、別のPC(開発環境なし、Windows10)では正常に動作するのですが、あるお客様のPC(Windows7Pro)で実行した場合、F1押下後に瞬間的にオートコンプリートが表示されますが即1行目が選択され、セルに表示されてしまいます。本来はオートコンプリートで表示されたリストからマウスなりカーソルキーで選択して決定させる処理にしているものなのですが、そう動いてくれません。
    BIOSでファンクションキーロックや、いまのPCはホットキーをファンクションキーに設定できるということも調べてみたのですが、それも関係がありませんでした。
    このようなPCにより動作が変わる原因など、ございますでしょうか?
    もしくは、ソースに何か問題がありますでしょうか?

    原因不明で困惑しています。ご教授いただけますと幸いです。
    また提供情報に不足があしましたらお申し付けください。

    みなさま、よろしくお願い致します。

    -----2015/11/20追記-----

    私のPCは64ビットで、動作しないPCは32ビットでした。
    振る舞いの違いはあるでしょうか?

    ------------------------


    -----以下、ソースです-----

    Private MautoCompList As AutoCompleteStringCollection '別途、住所のリストを設定しています。名称の前に空欄(「 東京都」)を入れています。下述しますが、KeyDownイベントで自動表示するため。
    Private WithEvents dgvEditTextBox As New DataGridViewTextBoxEditingControl

    'DataGridViewのEditingControlShowingでdgvEditTextBoxにイベントハンドらを設定
    Private Sub DataGrid_EditingControlShowing(sender As Object, e As DataGridViewEditingControlShowingEventArgs) Handles DataGrid.EditingControlShowing

    If TypeOf e.Control Is DataGridViewTextBoxEditingControl Then

    dgvEditTextBox = CType(e.Control, DataGridViewTextBoxEditingControl)

    'イベントハンドラを設定
    AddHandler dgvEditTextBox.KeyDown, AddressOf dgvEditTextBox_KeyDown

    dgvEditTextBox.AutoCompleteSource = AutoCompleteSource.CustomSource
    dgvEditTextBox.AutoCompleteMode = AutoCompleteMode.SuggestAppend
    dgvEditTextBox.AutoCompleteCustomSource = MautoCompList

    End If

    End Sub

    'DataGridViewでファンクションキーF1を押下したときに地名リストを表示
    Private Sub dgvEditTextBox_KeyDown(sender As Object, e As KeyEventArgs) Handles dgvEditTextBox.KeyDown

    If e.KeyCode = 112 Then '112はF1キー

    dgvEditTextBox.AutoCompleteCustomSource = MautoCompList
    dgvEditTextBox.Text = ""
    SendKeys.SendWait(" ")
    SendKeys.SendWait("{Enter}") 'オートコンプリートを自動表示するには何か入力してエンター押下が必要だったため、上とこの行の2行でその処理を入れています。

    End If

    End Sub
引用返信 削除キー/



トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

Mode/  Pass/


- Child Tree -