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

     

  • 相关阅读:
    深入字节码 -- 计算方法执行时间
    RubyCritic:一款不错的检测代码质量工具
    云告警平台 OneAlert :如何帮助运维工程师做好汇报?
    企业应用程序安全的新「守护神」
    另辟蹊径:云计算给企业带来的4个好处
    年度十佳 DevOps 博客文章(后篇)
    自定义 Lint 规则简介
    静态分析安全测试(SAST)优缺点探析
    css添加了原始滚动条要隐藏滚动条的显示
    jquery实现图片切换
  • 原文地址:https://www.cnblogs.com/ArRan/p/2662541.html
Copyright © 2011-2022 走看看