zoukankan      html  css  js  c++  java
  • C# DataGridView中实现类似ComboBox可编辑的下拉框

    http://download.csdn.net/detail/lanweiqiang/4357932 

     private int comboBoxColumnIndex = 0// DataGridView的首列

            
    public Form1()
    C# <wbr>DataGridView中实现类似ComboBox可编辑的下拉框功        
    {
                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()
    C# <wbr>DataGridView中实现类似ComboBox可编辑的下拉框功        
    {
    C# <wbr>DataGridView中实现类似ComboBox可编辑的下拉框功            
    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)
    C# <wbr>DataGridView中实现类似ComboBox可编辑的下拉框功        
    {
                
    if (e.ColumnIndex == comboBoxColumnIndex)
    C# <wbr>DataGridView中实现类似ComboBox可编辑的下拉框功            
    {
                    
    //此处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;             
                }

            }


            
    private void dataGridView1_CellLeave(object sender, DataGridViewCellEventArgs e)
    C# <wbr>DataGridView中实现类似ComboBox可编辑的下拉框功        
    {
                
    if (e.ColumnIndex == comboBoxColumnIndex)
    C# <wbr>DataGridView中实现类似ComboBox可编辑的下拉框功            
    {
                    
    //此处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)
    C# <wbr>DataGridView中实现类似ComboBox可编辑的下拉框功        
    {
                com.SelectedIndex 
    = -1;
                
    if (cellValue == null)
    C# <wbr>DataGridView中实现类似ComboBox可编辑的下拉框功            
    {
                    com.Text 
    = "";
                    
    return;
                }

                com.Text 
    = cellValue;
                
    foreach (Object item in com.Items)
    C# <wbr>DataGridView中实现类似ComboBox可编辑的下拉框功            
    {
                    
    if ((String)item == cellValue)
    C# <wbr>DataGridView中实现类似ComboBox可编辑的下拉框功                
    {
                        com.SelectedItem 
    = item;
                    }

                }

            }

    附上效果更明显:

    刚开始(Column13为效果列)

    C# <wbr>DataGridView中实现类似ComboBox可编辑的下拉框功

    获得光标,点击文本框可获得里面的值

    C# <wbr>DataGridView中实现类似ComboBox可编辑的下拉框功
    光标移开效果:
    C# <wbr>DataGridView中实现类似ComboBox可编辑的下拉框功

     

  • 相关阅读:
    js你不是的那些基础问题-错误处理机制
    js你不是的那些基础问题-数据类型的转换
    js你不是的那些基础问题-布尔运算符
    js你不是的那些基础问题-函数
    js你不知的那些基础问题-对象
    js你不知的那些基础问题-数值
    小程序中ios11底部黑条兼容
    上传---FileReader
    2021年了,我才知道H5支持元素拖放!!!
    ES6常用总结(一)
  • 原文地址:https://www.cnblogs.com/ArRan/p/2662541.html
Copyright © 2011-2022 走看看