2015.1.3 DataGridView中嵌入其它控件
1、按正常方法绑定待嵌入列的值,先赋值为空也行。
2、添加combbox到datagrivdview中 dvaw.Controls.Add(cb_dir);
3、添加DataGridView MouseClick事件
private void dvaw_MouseClick(object sender, MouseEventArgs e)
{
int row = GetRowIndexAt(e.Y); //点击行
int comcol = dvaw.Columns.Count - 1;//要出现combox的列
if (row>=0 && btn_alter.Text == "确认修改")
{
Rectangle rect = dvaw.GetCellDisplayRectangle(comcol, row, false);//列,行,是否只要显示部分
cb_dir.Text = dvaw.Rows[row].Cells[comcol].Value.ToString(); //原来的值作为嵌入combbox的初始值
//将嵌入控件显示在当前cell中
cb_dir.Left = rect.Left;
cb_dir.Top = rect.Top;
cb_dir.Width = rect.Width;
cb_dir.Height = rect.Height;
cb_dir.Visible = true;
if (dvaw.CurrentCell != null && dvaw.CurrentCell.ColumnIndex == comcol)
{
//当点中方向列时,combbox自动下拉************
cb_dir.DroppedDown = true;
}
}
else
cb_dir.Visible = false;//不满足combbox显示条件时,隐藏combbox
}
4. 添加判断鼠标点击时所在行函数,比CellClick的好处是点击空白处也能判断-1
public int GetRowIndexAt(int mouseLocation_Y)
{
if (dvaw.FirstDisplayedScrollingRowIndex < 0)
{
return -1;
}
if (dvaw.ColumnHeadersVisible == true && mouseLocation_Y <= dvaw.ColumnHeadersHeight)
{
return -1;
}
int index = dvaw.FirstDisplayedScrollingRowIndex;
int displayedCount = dvaw.DisplayedRowCount(true);
for (int k = 1; k <= displayedCount; )
{
if (dvaw.Rows[index].Visible == true)
{
Rectangle rect = dvaw.GetRowDisplayRectangle(index, true); // 取该区域的显示部分区域
if (rect.Top <= mouseLocation_Y && mouseLocation_Y < rect.Bottom)
{
return index;
}
k++;
}
index++;
}
return -1;
}
5. 添加combbox的SelectedIndexChanged 事件
//每次选择combox值时,自动修改对应cell的显示值,虽然此时cell隐藏在combox后面,当combox隐藏时,该新值自动显示出来
private void cb_dir_SelectedIndexChanged(object sender, EventArgs e)
{
int comcol = dvaw.Columns.Count - 1;//要出现combox的列
//注意,下行不能用Currentcell来做判断,因为当点击第一列时,也能选择combbox,但此时的当前cell就不是第二列,会导致选择无效。所以用currentrow来判断
if(btn_alter.Text == "确认修改")
{
if (dvaw.CurrentRow != null)
dvaw.CurrentRow.Cells[comcol].Value = ((ComboBox)sender).Text;
else
MessageBox.Show("请先选中航路所在行,再选择方向");
}
}
2015.1.3 DataGridView中嵌入其它控件的更多相关文章
- 在WinForm应用程序中嵌入WPF控件
我们知道,在WPF界面上添加WinForm的控件需要使用WindowsFormHost类.而在WinForm界面上添加WPF控件该如何做呢?有没有类似的类呢?明显是有的,ElementHost就是为了 ...
- 关于EasyUI DataGrid行编辑时嵌入时间控件
本人做一个名为“安徽中控”项目时,为快速开发基础数据增删改模块,遂采用EasyUIDatagrid将所有增删改查的操作都集中于表格中,并且所有增删改查操作都集中于泛型对象,从而不必为每个表写具体的增删 ...
- 关于intouch/ifix嵌入视频控件并使用(海康,大华)
2017年下半年项目开始接触利用intouch工控软件来进行项目二次开发.其中关于驱动的问题始终是上位机的重中之重,暂且不表(嘿嘿--),首先遇到的问题就是在弹窗中嵌入视频控件,监控设备的开停状态.经 ...
- WPF中嵌入WinForm中的webbrowser控件
原文:WPF中嵌入WinForm中的webbrowser控件 使用VS2008创建WPF应用程序,需使用webbrowser.从工具箱中添加WPF组件中的webbrowser发现其中有很多属性事件不能 ...
- 在web中使用windows控件,实现摄像头功能
最近做的一个Web版的视频会议项目,需要在网页中播放来自远程摄像头采集的实时视频,我们已经有了播放远程实时视频的使用C#编写的windows控件,如何将其嵌入到网页中去了?这需要使用一种古老的技术,A ...
- 在Web中使用Windows控件
版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 将Net控件转化为ActiveX控件 1GUID 2实现IObjectSafety接口 3程序集设定 制作安装程序 Web集 ...
- 在Qt中使用ActiveX控件
Qt的windows商业版本提供了ActiveQt这个framework,使用这个组件我们可以在Qt中使用ActiveX控件,并且也开发基于Qt的ActiveX控件.ActiveQt包含了两个组件QA ...
- C#中实现WebBrowser控件的HTML源代码读写
原文:C#中实现WebBrowser控件的HTML源代码读写 C#中实现WebBrowser控件的HTML源代码读写http://www.blogcn.com/user8/flier_lu/index ...
- ActiveReports 报表应用教程 (13)---嵌入第三方控件
葡萄城ActiveReports报表与Visual Studio完美集成,给我们带来更为灵活易用的报表定制和自定义控件嵌入支持,除了可以在报表中使用葡萄城ActiveReports报表内置控件外,您还 ...
随机推荐
- java深入探究14-lucene
项目代码:链接:http://pan.baidu.com/s/1qXVcfCw 密码:apw1 01 回顾索引 定义:索引是对数据库表中一列或多列的值进行排序的一种结构 目的:加快对数据库表中记录的查 ...
- HDFS请求接口
通过HTTP来访问HDFS有两种方法:直接访问,HDFS后台进程直接服务于来自客户端的请求:通过代理(一对多)访问,客户端通常使用DistributedFileSystemAPI访问HDFS.第一种情 ...
- java创建多线程的三种方式
/***************************继承Thread类创建多线程************************/ public class FirstThread extends ...
- AppStore审核2.1被拒大礼包过审经历
本团队的iOS端迭代至今,经历过AppStore审核的数次调整,包括审核时长.严厉程度等,尝过各种花式的拒绝理由,但从没有像2018年初这次来得猛烈和漫长.从首次提交到最后过审几乎花费一个月的时间,下 ...
- Spring分布式事务
[如何实现XA式.非XA式Spring分布式事务] [http://www.importnew.com/15812.html] 在JavaWorld大会上,来自SpringSource的David S ...
- NAVICAT PREMIUM 初识
1 问题运行SQL取数语句出错?. 答案:因为运行SQL文件时没有这个表.新的数据库里面 解决方法: 获取需要建立的二维表创建语句 新建查询 输入语句,点击运行即可 解释注释语句: 主体为五个字段的主 ...
- Django 基础 ORM系统
Object Relational Mapping(ORM) ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据 ...
- 在C#中,Json的序列化和反序列化的几种方式
摘自:http://www.cnblogs.com/caofangsheng/p/5687994.html 在这篇文章中,我们将会学到如何使用C#,来序列化对象成为Json格式的数据,以及如何反序列化 ...
- POJ2985 The k-th Largest Group (并查集+treap)
Newman likes playing with cats. He possesses lots of cats in his home. Because the number of cats is ...
- C#异步编程(四)混合模式线程同步
之前讨论了基元用户模式和内核模式线程同步构造.其他所有线程同步构造都基于它们,而且一般都合并了用户模式和内核模式构造,我们称为混合线程同步构造.没有线程竞争时,混合构造提供了基元用户模式构造所具有的性 ...