1

私はVB.NETでアプリケーションを開発していますが、答えはC#ベースでもあります。私の問題は、一部のデータをフィルタリングするためのコンボボックスがあり、以前に書かれたもの (Google 検索バーなど) に基づいて検索候補を実装する必要があることです。ユーザーが物理キーボードからフィルタリング基準を挿入すると、すべて問題ありません ( SuggestAutoCompleteModeを設定し、ListItemsにAutoCompleteSourceを設定したため)。しかし、私が取り組んでいるアプリケーションは、ユーザーに次のような数字のオンスクリーン キーボードも提供します。

ここに画像の説明を入力

コード サンプルが必要な場合は提供しますが、キーボードの機能は単純です: 書かれたテキストを取得し、最後に押されたキーを追加し、追加された新しいテキストでテキスト ボックスを上書きします。これまでのところ、ユーザーがこのスクリーン キーボードから入力を挿入すると、候補は表示されなくなりました。物理的なキーボードと同じように、スクリーン キーボードで同じ動作を実現する方法はありますか? ありがとう、良い一日を!

編集:キーパッドの動作方法のコードは次のとおりです。

Private Sub AppendKey (ByVal key As String)
    Dim str1 As String = cboFilter.Text
    str1 = str1 & key 
    cboFilter.Text = str1
    cboFilter.Focus()
    cboFilter.SelectionStart = cboFilter.Text.Length 
End Sub 
4

1 に答える 1

1

Jimi が提案したように、他の誰かがこの問題に遭遇した場合に備えて、ここで見つけた解決策を回答として投稿します。この特定のコンボボックスにキーパッドが使用されている場合、提供された Sub に次の新しく作成された Sub への呼び出しを追加しました。

Private Sub AppendKey (ByVal key As String)
    If currentCbo = cboFilter Then 
        'currentCbo holds the currently editting combobox'
        AppendKeyInFilterCbo(key)
    Else 
        'The normal behaviour for the other comboboxes'
        Dim str1 As String = currentCbo.Text
        str1 = str1 & key 
        currentCbo.Text = str1
        currentCbo.Focus()
        currentCbo.SelectionStart = currentCbo.Text.Length 
    End If 
End Sub 

Private Sub AppendKeyInFilterCbo (ByVal key As String)
    cboFilter.Focus()
    cboFilter.SelectionStart = cboFilter.Text.Length
    SendKeys.Send("{" + key + "}")
End Sub 

この動作は、提案がユーザーにとって意味のある唯一のフィルター コンボボックスであるため、フィルター コンボボックスにのみ必要でした。

于 2020-07-08T08:06:11.110 に答える