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可编辑的下拉框功

     

  • 相关阅读:
    Spring boot 基于注解方式配置datasource
    Java任务调度框架之分布式调度框架XXL-Job介绍
    mysql使用联合索引提示字符长度超限制解决办法
    程序访问一个地址时候报400错误,浏览器访问正常怎么解决
    JDK8stream将list转Map对象报错java.lang.IllegalStateException
    如何应对互联网行业的「中年危机」?
    SpringMVC访问出错No converter found for return value of type
    怎么设置tomcat在get请求的中文也不乱码?两种情况下配置
    使用tomcat方式实现websocket即时通讯服务端讲解
    服务端向客户端推送消息技术之websocket的介绍
  • 原文地址:https://www.cnblogs.com/ArRan/p/2662541.html
Copyright © 2011-2022 走看看