winfrom datagridview中DataGridViewTextBoxColumn的联动处理
这个问题有两种方法 第一种是用DataGridview中自带的DataGridViewTextBoxColumn 控件,第二种是动态添加combobox控件
方法一:
首先 窗体上拖拽一个 DataGridview
然后在这个DataGridview中添加两列DataGridViewTextBoxColumn (第一列叫A,第二列叫B)
然后绑定A代码
            A.DataSource = ds.Tables[].DefaultView;
            A.DisplayMember = "table_name";
            A.ValueMember = "table_name";
            ((DataGridViewComboBoxColumn)dataGridView1.Columns[]).DefaultCellStyle.NullValue = "--请选择--";  //默认值
其次是绑定B代码
             //当前选中行的第二列赋值
             ((DataGridViewComboBoxCell)dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex].Cells[]).DataSource = ds.Tables[].DefaultView;
            ((DataGridViewComboBoxCell)dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex].Cells[]).DisplayMember = "comments";
            ((DataGridViewComboBoxCell)dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex].Cells[]).ValueMember = "column_name";
            ((DataGridViewComboBoxColumn)dataGridView1.Columns[]).DefaultCellStyle.NullValue = "--请选择--";
然后添加SelectedIndexChanged事件代码
  private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
        {
            DataGridView dgv = (DataGridView)sender;
            if (dgv.CurrentCell.OwningColumn.Name == "A")
            {
                ComboBox cb = (ComboBox)e.Control;
                cb.SelectedIndexChanged += new EventHandler(comboBox_SelectedIndexChanged);
            }
        }
SelectedIndexChanged事件代码
 public void comboBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            ComboBox comboBox = (ComboBox)sender;
            if (dataGridView1.CurrentCell.OwningColumn.Name == "表名")
            {
                if (comboBox.Text != "")
                {
                    //这是绑定B的方法
                    DBFieldNote(comboBox.Text);
                }
            }
        }
方法二:
首先实例化combobox对象
  private ComboBox comboBox = new ComboBox();
   private ComboBox cb = new ComboBox();
其次:
      this.dataGridView1.Controls.Add(comboBox);//将控件添加到DataGridview中
                DBTableName();//绑定comboBox
                comboBox.Visible = false;
                comboBox.SelectedIndexChanged += new EventHandler(comboBox_SelectedIndexChanged);//添加事件
 private void comboBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            string name = ((ComboBox)sender).Text;
            dataGridView1.CurrentCell.Value = name;//将选中的值添加到DataGridview当前选中的单元格里
            DBFieldNote(name);//绑定第二个combobox(也就是cb)
        }
 public void DBFieldNote(string tablename)
        {
            this.dataGridView1.Controls.Add(cb);
            cb.Visible = false;
            cb.SelectedIndexChanged += new EventHandler(cb_SelectedIndexChanged);
          ......
        }
 private void cb_SelectedIndexChanged(object sender, EventArgs e)
        {
            dataGridView1.CurrentCell.Value = cb.Text;
        }
    private void dataGridView1_CurrentCellChanged(object sender, EventArgs e)
        {
            if (dataGridView1.CurrentCell != null)
            {
                if (dataGridView1.CurrentCell.ColumnIndex == )//如果选中的是第一列 就显示第一个combobox
                {
                    System.Drawing.Rectangle rect = dataGridView1.GetCellDisplayRectangle(dataGridView1.CurrentCell.ColumnIndex, dataGridView1.CurrentCell.RowIndex ,false);//获取当前选中的单元格的属性(宽 ,高等)
                    comboBox.Left = rect.Left;
                    comboBox.Top = rect.Top;
                    comboBox.Width = rect.Width;
                    comboBox.Height = rect.Height;
                    comboBox.Visible = true;
                }
                else if (dataGridView1.CurrentCell.ColumnIndex==)//如果是选中第二列就显示cb
                {
                    System.Drawing.Rectangle rect1 = dataGridView1.GetCellDisplayRectangle(comboxIndex + , dataGridView1.CurrentCell.RowIndex, false);
                    cb.Left = rect1.Left;
                    cb.Top = rect1.Top;
                    cb.Width = rect1.Width;
                    cb.Height = rect1.Height;
                    cb.Visible = true;
                }
            }
            else
            {
                comboBox.Visible = false;
            }
        }
winfrom datagridview中DataGridViewTextBoxColumn的联动处理的更多相关文章
- Winfrom DataGridView中使用Tooltip
		
第一步:添加DataGridView.Tooltip控件,略 第二步:设置ToolTip 相关属性,略,参考下图 第三步:DataGridView 添加 CellMouseEnter.CellMous ...
 - DataGridView 中添加CheckBox和常用处理方式 .
		
DataGridView 中添加CheckBox和常用处理方式 文章1 转载:http://blog.csdn.net/pinkey1987/article/details/5267934 DataG ...
 - Datagridview 添加checkbox列,并判断Datagridview 中的checkbox列是否被选中
		
Solution1://In Fill DataGridViewEvent : DataGridViewCheckBoxColumn ChCol = new DataGridViewCheckBoxC ...
 - 将listBox中信息显示在dataGridview中,操作datagridview后删除listBox信息和SQL数据库信息 续(浅谈listBox..)
		
应用场景 对datagridview控件使用了解,以及操作datagridview选中的信息删除,并且有二次确认后才删除用户信息.相应的删除listbox中用户信息,下面一起看看需要哪些准备 ...
 - 在Datagridview中添加datagridviewComboBox列并显示下拉列表
		
在DataGridView中自动的添加Column. private void button_autoAddColumn_Click(object sender, EventArgs e) { try ...
 - [Winform] DataGridView 中 DataGridViewComboBox 的可编辑
		
在 DataGridView 中设置的 DataGridViewComboBox,默认是不可编辑的,即使将其列属性 DisplayStyle 设置成 ComboBox 或其他,也无法编辑: 故作如下处 ...
 - 禁用datagridview中的自动排序功能
		
把datagridview中的自动排序功能禁用自己收集的两种方法,看看吧①DataGridView中的Columns属性里面可以设置.进入"EditColumns"窗口后,在相应的 ...
 - C#读取Excel表格数据到DataGridView中和导出DataGridView中的数据到Excel
		
其实想在datagridview中显示excel表格中的数据跟读取数据库中的数据没什么差别,只不过是创建数据库连接的时候连接字段稍有差别. private void btnShow_Click(obj ...
 - DataGridView中实现checkbox全选的自定义控件
		
在DataGridView中实现Checkbox的全选的方法就是在列头画一个checkbox, 并给其一个事件. 这个之前很多blog都有写, 这里就不多废话了, codeproject上面有示例代 ...
 
随机推荐
- github文档
			
Video Guides GitHub Help GitHub.com Hello World 10 minute read Intro What is GitHub? Create a Repo ...
 - 性能测试四十八:Jenkins+Ant+Jmeter系统部署
			
工作步骤: 1.开发提交代码SVN/Git 2.代码编译.打war包 3.上传war包到服务器 4.重启web服务器 5.开始测试/自动化测试 6.发测试结果 Jenkins工作: 1.开发提交代码G ...
 - API接口加密方式说明
			
标签: 接口 2016年10月11日 19:41:20 13299人阅读 评论(0) 收藏 举报 分类: API(5) 版权声明:本文为博主原创文章,未经博主允许不得转载. http://blog ...
 - linux:安装并使用mongo
			
1.下载mongo: curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz 2.解压: tar -zxvf ...
 - Python(文件操作实例)
			
给定一个文件:以及给定的字符,比如“a”; 统计字符个数:(可选) # 文件的打开操作f = open("wyl.txt","r")# 文件的读取操作conte ...
 - .Net页面缓存OutPutCache详解
			
一 它在Web.Config中的位置 <system.web> <!--页面缓存--> <caching> <outputCacheSettings> ...
 - 本地化KendoUI
			
<!doctype html> <html> <head> <title>Kendo UI Web</title> ...
 - Flink--本地执行和集群执行
			
本地执行 1:local环境 LocalEnvironment是Flink程序本地执行的句柄.用它在本地JVM中运行程序 - 独立运行或嵌入其他程序中. 本地环境通过该方法实例化ExecutionEn ...
 - ELK收集Nginx自定义日志格式输出
			
1.ELK收集日志的有两种常用的方式: 1.1:不修改源日志格式,简单的说就是在logstash中转通过 grok方式进行过滤处理,将原始无规则的日志转换为规则日志(Logstash自定义日志格式) ...
 - Docker技术底层架构剖析
			
[Docker 底层技术] docker底层的 2 个核心技术分别是 Namespaces 和 Control groups 在操作系统中,网络配置,进程,用户,IPC(进程之间的调用)等信息之间的 ...