这个问题有两种方法 第一种是用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的联动处理的更多相关文章

  1. Winfrom DataGridView中使用Tooltip

    第一步:添加DataGridView.Tooltip控件,略 第二步:设置ToolTip 相关属性,略,参考下图 第三步:DataGridView 添加 CellMouseEnter.CellMous ...

  2. DataGridView 中添加CheckBox和常用处理方式 .

    DataGridView 中添加CheckBox和常用处理方式 文章1 转载:http://blog.csdn.net/pinkey1987/article/details/5267934 DataG ...

  3. Datagridview 添加checkbox列,并判断Datagridview 中的checkbox列是否被选中

    Solution1://In Fill DataGridViewEvent : DataGridViewCheckBoxColumn ChCol = new DataGridViewCheckBoxC ...

  4. 将listBox中信息显示在dataGridview中,操作datagridview后删除listBox信息和SQL数据库信息 续(浅谈listBox..)

    应用场景      对datagridview控件使用了解,以及操作datagridview选中的信息删除,并且有二次确认后才删除用户信息.相应的删除listbox中用户信息,下面一起看看需要哪些准备 ...

  5. 在Datagridview中添加datagridviewComboBox列并显示下拉列表

    在DataGridView中自动的添加Column. private void button_autoAddColumn_Click(object sender, EventArgs e) { try ...

  6. [Winform] DataGridView 中 DataGridViewComboBox 的可编辑

    在 DataGridView 中设置的 DataGridViewComboBox,默认是不可编辑的,即使将其列属性 DisplayStyle 设置成 ComboBox 或其他,也无法编辑: 故作如下处 ...

  7. 禁用datagridview中的自动排序功能

    把datagridview中的自动排序功能禁用自己收集的两种方法,看看吧①DataGridView中的Columns属性里面可以设置.进入"EditColumns"窗口后,在相应的 ...

  8. C#读取Excel表格数据到DataGridView中和导出DataGridView中的数据到Excel

    其实想在datagridview中显示excel表格中的数据跟读取数据库中的数据没什么差别,只不过是创建数据库连接的时候连接字段稍有差别. private void btnShow_Click(obj ...

  9. DataGridView中实现checkbox全选的自定义控件

    在DataGridView中实现Checkbox的全选的方法就是在列头画一个checkbox, 并给其一个事件. 这个之前很多blog都有写, 这里就不多废话了,  codeproject上面有示例代 ...

随机推荐

  1. github文档

    Video Guides GitHub Help GitHub.com   Hello World 10 minute read Intro What is GitHub? Create a Repo ...

  2. 性能测试四十八:Jenkins+Ant+Jmeter系统部署

    工作步骤: 1.开发提交代码SVN/Git 2.代码编译.打war包 3.上传war包到服务器 4.重启web服务器 5.开始测试/自动化测试 6.发测试结果 Jenkins工作: 1.开发提交代码G ...

  3. API接口加密方式说明

    标签: 接口 2016年10月11日 19:41:20 13299人阅读 评论(0) 收藏 举报  分类: API(5)  版权声明:本文为博主原创文章,未经博主允许不得转载. http://blog ...

  4. linux:安装并使用mongo

    1.下载mongo:  curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz 2.解压: tar -zxvf ...

  5. Python(文件操作实例)

    给定一个文件:以及给定的字符,比如“a”; 统计字符个数:(可选) # 文件的打开操作f = open("wyl.txt","r")# 文件的读取操作conte ...

  6. .Net页面缓存OutPutCache详解

    一 它在Web.Config中的位置 <system.web> <!--页面缓存--> <caching> <outputCacheSettings> ...

  7. 本地化KendoUI

    <!doctype html> <html>     <head>         <title>Kendo UI Web</title> ...

  8. Flink--本地执行和集群执行

    本地执行 1:local环境 LocalEnvironment是Flink程序本地执行的句柄.用它在本地JVM中运行程序 - 独立运行或嵌入其他程序中. 本地环境通过该方法实例化ExecutionEn ...

  9. ELK收集Nginx自定义日志格式输出

    1.ELK收集日志的有两种常用的方式: 1.1:不修改源日志格式,简单的说就是在logstash中转通过 grok方式进行过滤处理,将原始无规则的日志转换为规则日志(Logstash自定义日志格式) ...

  10. Docker技术底层架构剖析

    [Docker  底层技术] docker底层的 2 个核心技术分别是 Namespaces 和 Control groups 在操作系统中,网络配置,进程,用户,IPC(进程之间的调用)等信息之间的 ...