アプリ版:「スタンプのみでお礼する」機能のリリースについて

質問させていただきます。

現在、VB.net2019を使用してシステムを製造しています。

DataGridViewのコンボボックスで、以下のことをしたいと考えています。

 ・入力値に対して「部分一致」で検索を行い、自身のリストから値を絞り込む
 ・リストにもない値も入力可能

絞り込みに関しては、オートコンプリート機能を用いると
前方一致で候補値が出てくるのはわかっているのですが、部分一致は行えません。

また、リストにない値を入力する方法だけはわかったのですが、
絞り込み機能と併用する必要があります。

現在、コンボボックスのリスト値はデータテーブルでセットしていますが、
Itemへの追加でも問題有りません。


上記の機能を実装するための手がかりを見つけられず
焦っています。


お手数をおかけしますが、よろしくお願いいたします。

A 回答 (1件)

できません。



DataGridViewComboBoxColumn、DataGridViewComboBoxCell、DataGridViewComboBoxEditingControlを継承して、既存のAutoCompleteに頼らない実装を相当作り込まないと実現することはできません。

public class DataGridViewComboBoxColumnEx : DataGridViewComboBoxColumn
{
public DataGridViewComboBoxColumnEx() : base()
{
this.CellTemplate = new DataGridViewComboBoxCellEx();
}
}

public class DataGridViewComboBoxEditingControlEx : DataGridViewComboBoxEditingControl
{
protected override void OnEnter(EventArgs e)
{
base.OnEnter(e);
this.DropDownStyle = ComboBoxStyle.DropDown;
}
}

public class DataGridViewComboBoxCellEx : DataGridViewComboBoxCell
{
private Type editType = typeof(DataGridViewComboBoxEditingControlEx);

public override Type EditType => this.editType;
}

DataGridViewComboBoxEditingControlEx として、既存のドロップダウンの動作を強制的に廃止し、入力候補の絞り込みが行われるドロップダウンを描画することになりそうです。
ちょっと既存ドロップダウンを表示させない方法は分かりませんでした。
また、これを行うと、MessageFiliterを利用して、ドロップダウンが表示されている際に上、下、Esc、Tab、Enter、マウスホイール操作が行われた時にドロップダウン側にその操作を通知させる必要があります。
    • good
    • 1
この回答へのお礼

返信ありがとうございます。

簡単にはできないのですね。。。

おっしゃる通り、矢印やマウスの制御等もあるため
今から作りこむのは難しそうです。

見た目は既存の機能にかなわないとは思いますが
類似の動作を行えないか色々と試してみます。

既存の機能ではすぐにできないことがかわり
すっきりしました。

ご回答、ありがとうございました。

お礼日時:2020/12/18 08:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A