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

     

  • 相关阅读:
    数据库主从同步相关问题
    前端使用node.js的http-server开启一个本地服务器
    css中height 100vh的应用场景,动态高度百分比布局,浏览器视区大小单位
    通过浏览器F12开发工具快速获取别的网站前端代码的方法
    vue打包app嵌入h5,区分app进入和android,ios显示不同的下载链接
    vue实现验证码倒计时60秒的具体代码
    vue用hbuilderX打包app嵌入h5方式云打包和遇到的问题
    Cookie写不进去问题深入调查 https Secure Cookie
    vue配置手机通过IP访问电脑开发环境
    区块链名词解析:ICO、IFO、IEO和IMO,分别是什么呢?
  • 原文地址:https://www.cnblogs.com/ArRan/p/2662541.html
Copyright © 2011-2022 走看看