作者gundan (弹弹的哀伤)
看板C_Sharp
标题[问题] dataGridView 中textBox 的自动完成
时间Mon Oct 21 22:02:47 2013
问题是这样的 我有个datagridview
里面我加入一个DataGridViewTextBoxColumn
我要在这个column上输入的时候可以有自动完成的功能
我主要是参考下面这个网站做的
http://ppt.cc/0I1w
初始如下:
DataGridViewTextBoxColumn prodNameColumn = new DataGridViewTextBoxColumn();
prodNameColumn.Name = "NAME";
DataGridView.Columns.Add(prodNameColumn);
然後 EditingControlShowing 的event中
int column = ShipDataGridView.CurrentCell.ColumnIndex;
string colName = ShipDataGridView.Columns[column].Name;
if(colName.Equals("NAME"))
{
TextBox tb = e.Control as TextBox;
if (tb != null)
{
AutoCompleteStringCollection collection =
new AutoCompleteStringCollection();
collection.Add("大家");
collection.Add("大象");
collection.Add("飞机");
collection.Add("飞鸟");
tb.AutoCompleteMode = AutoCompleteMode.Suggest;
tb.AutoCompleteCustomSource = collection;
tb.AutoCompleteSource = AutoCompleteSource.CustomSource;
}
}
问题是 我打大的时候应该要出现大家跟大象可以选
可是并没有
可是如果"大" 是用复制贴上的就会出现自动完成选项
或者是我打大以後 按个空白再用backspace删掉空格也会出现自动完成
这个只有在中文会出现这个情形,如果自动完成的内容为英文就不会有问题
请问一下有没有人碰过这个问题?
该如何解决呢?
我希望我直接输入"大"这个字後就可以直接出现自动完成的选单
谢谢!
/*******************************************/
目前用很烂的解决方法
tb.TextChanged += tb_TextChanged;
void tb_TextChanged(object sender, EventArgs e)
{
SendKeys.Send(" {BACKSPACE}");
((TextBox)sender).TextChanged -= tb_TextChanged;
}
请问有没有更好的写法呢?
谢谢
/*******************************************/
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 123.192.220.64
※ 编辑: gundan 来自: 118.163.30.37 (10/22 14:14)
1F:→ drizzt123:我测一下有出来啊,你中文是用啥输入法,有完成选字吗? 10/22 15:06
2F:→ gundan:用呒虾米 打完字按空格字就出来 不用选字 ... 10/22 15:21