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上面有示例代 ...
随机推荐
- JumpServer里的sftp功能报错说明
JumpServer里sftp默认的家目录是/tmp下 修改默认家目录: vim /usr/local/coco/coco/sftp.py class SFTPServer(paramiko.SFTP ...
- Python 开发的 IDE 和代码编辑器,你选择的哪一个?
为了方便,我会分两个大类去说明,一类是适用于软件开发的比较通用的编辑器或 IDE ,我们可以通过插件等形式支持 Python 的开发,另一个是专注于 Python 开发的编辑器或 IDE . 不过在此 ...
- 蓝桥杯 历届试题 幸运数 dfs
历届试题 幸运数 时间限制:1.0s 内存限制:256.0MB 问题描述 幸运数是波兰数学家乌拉姆命名的.它采用与生成素数类似的"筛法"生成 . 首先从1开始写出自然数1,2, ...
- python---用链表结构实现有序和无序列表的几个功能
只是看看套路,没有深入练习. 如果真要自己写,可以基于此类. 但其实,在普通使用中,这样实现的性能,并没有python原生的列表性能好. 因为python原生列表的功能,是基于数组作扩展实现的. # ...
- 一脸懵逼学习MapReduce的原理和编程(Map局部处理,Reduce汇总)和MapReduce几种运行方式
1:MapReduce的概述: (1):MapReduce是一种分布式计算模型,由Google提出,主要用于搜索领域,解决海量数据的计算问题. (2):MapReduce由两个阶段组成:Map和Red ...
- Redis监控和告警
https://blog.csdn.net/isoleo/article/details/52981140
- Android动画模式
在Android中,有两种动画模式:Tween Animation(渐变动画)和Frame Animation(帧动画).渐变动画是通过对场景里的对象不断做图像变换(平移.缩放.旋转等)来产生动画效果 ...
- Python_冒泡排序
从小到大的排序:(最前面的数和一步步和后面的数比较,如果大于则交换,如果不大于则继续循环) 方法1: data = [65, 1, 45, 77, 3, 9, 43, 23, 7, 53, 213, ...
- LVM实现逻辑卷镜像
本文系统 CentOS 6.5 x64 LVM的镜像功能,有点儿类似于Raid1,即多块儿磁盘互相同步,确保资料不会丢失. 1.在此添加4块物理硬盘,每块2G空间 2.将sdb.sdc.sdd.sde ...
- seafile数据的备份与恢复
seafile数据备份包括MySQL数据备份与seafile,seahub数据备份两个部分.所以在备份的时候需要注意这一点. 我的存储底层用glusterfs数据共享,为了防止一台服务器宕机以后另一台 ...