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

     

  • 相关阅读:
    Python的招牌花旦
    Python的for循环究竟是什么回事儿
    人人都喜欢用的十大python标准库
    有编程基础学python怎么赚点小钱?
    python3 Flask Redis 如何切换数据库
    贪心算法
    【ACM】nyoj_106_背包问题_201308152026
    【ACM】nyoj_14_会场安排问题_201308151955
    【ACM】nyoj_132_最长回文子串_201308151713
    【ACM】nyoj_47_过桥问题_201308151616
  • 原文地址:https://www.cnblogs.com/ArRan/p/2662541.html
Copyright © 2011-2022 走看看