c# DataGridView 加入Combobox下拉框 问题 输入数字零出错
来源:互联网 发布:java金融项目面试技巧 编辑:程序博客网 时间:2024/05/22 12:36
datagridview加了combobox控件后 ,当输入0时,0跳到文本最前面,焦点移到了Datagridview了,处理方法
combobox加入keydown事件捕捉键盘输入0的动作,下面是代码
引用http://www.360doc.com/content/10/0805/11/2286640_43803573.shtml
using System;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
//此Form中有两个控件,一个DataGridView(dataGridView1),一个ComboBox(comboBox1)
//DataGridView中有两列(都是DataGridViewTextBoxColumn的),其中第一列实现类似ComboBox的功能
//第一列中只有正在编辑的Cell才会显示ComboBox,其他的不会显示,这样好看一点
namespace Test
{
public partial class Form1 : Form
{
private int comboBoxColumnIndex = 0; // DataGridView的首列
public Form1()
{
InitializeComponent();
InitComboBoxValues();
this.dataGridView1.Controls.Add(this.comboBox1);
this.dataGridView1.CellEnter += new
DataGridViewCellEventHandler(dataGridView1_CellEnter);
this.dataGridView1.CellLeave+=new
DataGridViewCellEventHandler(dataGridView1_CellLeave);
}
private void InitComboBoxValues()
{
this.comboBox1.Items.AddRange(new String[] { "Beijing",
"Shanghai", "Guangzhou", "Wuhan", "Shenzhen" });
this.comboBox1.AutoCompleteMode = AutoCompleteMode.Suggest;
//输入提示
this.comboBox1.AutoCompleteSource =
AutoCompleteSource.ListItems;
}
private void dataGridView1_CellEnter(object sender,
DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == comboBoxColumnIndex)
{
//此处cell即CurrentCell
DataGridViewCell cell =
this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex];
Rectangle rect =
this.dataGridView1.GetCellDisplayRectangle(cell.ColumnIndex,
cell.RowIndex, true);
this.comboBox1.Location = rect.Location;
this.comboBox1.Size = rect.Size;
comfirmComboBoxValue(this.comboBox1, (String)cell.Value);
this.comboBox1.Visible = true;
}
///注意下面此句的变化
comboBox1.Focus();
//注意上面此句的变化
}
//当用户在combobox1输入0时,0会跳到最前面,光标会跳到Datagridview里,似乎必须放在keydown事件,keyup不行
private void comboBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.D0 || e.KeyCode == Keys.NumPad0))
{
comboBox1.Focus();
comboBox1.SelectionStart = comboBox1.Text.Length;
}
}
private void dataGridView1_CellLeave(object sender,
DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == comboBoxColumnIndex)
{
//此处cell不为CurrentCell
DataGridViewCell cell =
this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex];
cell.Value = this.comboBox1.Text;
this.comboBox1.Visible = false;
}
}
private void comfirmComboBoxValue(ComboBox com, String cellValue)
{
com.SelectedIndex = -1;
if (cellValue == null)
{
com.Text = "";
return;
}
com.Text = cellValue;
foreach (Object item in com.Items)
{
if ((String)item == cellValue)
{
com.SelectedItem = item;
}
}
}
}
}
- c# DataGridView 加入Combobox下拉框 问题 输入数字零出错
- c# DataGridView 加入Combobox下拉框 问题 输入数字零出错
- c# DataGridView 加入Combobox下拉框 问题 输入数字零出错
- c#datagridview加入combobox下拉框的实现
- C# DataGridView中ComboBox下拉更改事件
- 在Visual Studio 2005的DataGridView控件中加入ComboBox下拉列表框的实现(C#)
- Visual Studio 2005的DataGridView控件中加入ComboBox下拉列表框的实现(C#)
- 在Visual Studio 2005的DataGridView控件中加入ComboBox下拉列表框的实现(C#)
- 在Visual Studio 2005的DataGridView控件中加入ComboBox下拉列表框的实现(C#)
- 在Visual Studio 2005的DataGridView控件中加入ComboBox下拉列表框的实现(C#)
- 在Visual Studio 2005的DataGridView控件中加入ComboBox下拉列表框的实现(C#)
- 在Visual Studio 2005的DataGridView控件中加入ComboBox下拉列表框的实现(C#)
- 在DataGridView控件中加入ComboBox下拉列表框的实现
- 在DataGridView控件中加入ComboBox下拉列表框的实现4
- DataGridView控件中加入ComboBox下拉列表框的实现(C#)
- 在DataGridView控件中加入ComboBox下拉列表框的实现
- 在DataGridView控件中加入ComboBox下拉列表框的实现
- 在Visual Studio 2005的DataGridView控件中加入ComboBox下拉列表框的实现(C#)
- 代码 部分
- ORA-00001 违反唯一约束条件
- 使用Eclipse调用动态链接库程序环境设置
- “类视图”和“对象浏览器”图标
- Sponsored Feature: Building a Highly Scalable 3D Particle System
- c# DataGridView 加入Combobox下拉框 问题 输入数字零出错
- DM9000网卡初始化错误
- c# DataGridView 加入Combobox下拉框 问题 输入数字零出错
- c# DataGridView 加入Combobox下拉框 问题 输入数字零出错
- MIME编码介绍
- Android提高第六篇之BroadcastReceiver
- Oracleservice诡异的丢失
- DNS解析协议的C语言简单实现
- 如何在一台linux机子上安装XP系统