社区
C#
帖子详情
如何在上下左右移动时,仍能对DataGrid上的控件进行准确定位?
sonny72
2005-02-02 02:02:28
我的目的是把DataGrid改成只读的,用户要更改数据,点中单元格时,在单元格上覆盖一个下拉菜单.
如果DataGrid没有滚动条移动,那没问题。可是如果有滚动条移动,怎么才能对其进行定位呢?
请高人指点!在线等!
...全文
471
25
打赏
收藏
如何在上下左右移动时,仍能对DataGrid上的控件进行准确定位?
我的目的是把DataGrid改成只读的,用户要更改数据,点中单元格时,在单元格上覆盖一个下拉菜单. 如果DataGrid没有滚动条移动,那没问题。可是如果有滚动条移动,怎么才能对其进行定位呢? 请高人指点!在线等!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
25 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sonny72
2005-02-03
打赏
举报
回复
这个问题还没完,顶一下.
曲滨_銘龘鶽
2005-02-03
打赏
举报
回复
private void dataGrid1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
DataGrid dg = sender as DataGrid;
DataGrid.HitTestInfo hti;
//通过坐标取得 HitTestInfo 对象
hti = dg.HitTest(e.X, e.Y);
//如果鼠标是在 单元格上的话(其他还有列头等不应该处理)
if (hti.Type == System.Windows.Forms.DataGrid.HitTestType.Cell)
{
//取得 现在位置的控件 如果是 Grid 多半都是
Control ctl= dg.GetChildAtPoint(new Point(e.X,e.Y));
if (ctl !=null)
{
//取得控件在屏幕上的位置
Rectangle CtlWinRect = ctl.RectangleToScreen(
new Rectangle(0,0,ctl.Width,ctl.Height)
);
//这样可以show 出菜单
contextMenu1.Show(ctl,new Point(0,ctl.Height));
//行索引
int rowIndex = hti.Row;
//列索引
int columnIndex = hti.Column;
//改有的数据都有了。
//想干什么都行
}
}
}
lengyuewuhen
2005-02-03
打赏
举报
回复
顶了
噯卟釋手
2005-02-03
打赏
举报
回复
up
sonny72
2005-02-03
打赏
举报
回复
可不可以获取DATAGRID滚动条的参数?
sonny72
2005-02-02
打赏
举报
回复
for:zzcboy(北斗)
我有鼠标定位没有意义,我要的是单元格定位,要用下拉菜单覆盖单元格,光有鼠标定位是无法准确覆盖单元格的,只能在单元格附近,对不?
zzcboy
2005-02-02
打赏
举报
回复
楼主看这样何如
//定义鼠标点击事件
this.YourDataGrid.MouseDown += new System.Windows.Forms.MouseEventHandler(this.YourDataGrid_MouseDown);
private void YourDataGrid_MouseDown(object sender,System.Windows.Forms.MouseEventArgs e)
{
// e.X 和 e.Y 为鼠标点击的坐标, 这样就确定了下拉框应该出现的位置了
//ShowYourList(e.x, e.y)//你自己的显示下拉框的函数
}
北京的雾霾天
2005-02-02
打赏
举报
回复
学习中.......
sonny72
2005-02-02
打赏
举报
回复
for:zhzuo(秋枫)
能给我贴过来吗?我这边一下子上不了国际的了.
sonny72
2005-02-02
打赏
举报
回复
要确定哪一行哪一列是很简单的,this.dataGrid_marc_show.CurrentCell就都有了,问题是滚动条移动后,有一部分的dataGrid已经隐藏,由dataGrid推算出来的值和实际的值已经不一样了啊!我要的值是去掉dataGrid已经隐藏的那部分值
marvelstack
2005-02-02
打赏
举报
回复
http://www.syncfusion.com/FAQ/WinForms/FAQ_c44c.asp
北京的雾霾天
2005-02-02
打赏
举报
回复
我代码中的this指的是DataGrid的一个实例,是这样的:
if (dataGrid.HitTest(m_CurPoint).Type != System.Windows.Forms.DataGrid.HitTestType.Cell)
{
Console.WriteLine(dataGrid.HitTest(m_CurPoint).Row);//所在的行号
Console.WriteLine(dataGrid.HitTest(m_CurPoint).Column);//所在的列号
}
北京的雾霾天
2005-02-02
打赏
举报
回复
可以跟据鼠标的当前位置来确定鼠标下的DataGrid是哪一行哪一列,然后由行和列来确定当前行和列的坐标来确定出你的菜单显示的位置,参考如下代码:
Point m_CurPoint = 当前鼠标位置;
if (this.HitTest(m_CurPoint).Type != System.Windows.Forms.DataGrid.HitTestType.Cell)
{
Console.WriteLine(this.HitTest(m_CurPoint).Row);//所在的行号
Console.WriteLine(this.HitTest(m_CurPoint).Column);//所在的列号
}
sonny72
2005-02-02
打赏
举报
回复
就象你说的,可以在滚动条移动时,隐藏掉下拉菜单啊!重新点击时,再显示.可是怎么获取呢?
北京的雾霾天
2005-02-02
打赏
举报
回复
就是能获取滚动条的移动参数,也不能准确的保证它们的同步,比如一个先一个后,因为它们位置的移动不是同一个时间,当处理很多事件这种现象会明显出来.不过希望你能找到一个合适的方法...
sonny72
2005-02-02
打赏
举报
回复
for:hbxtlhx(踏雪寻岩)
问题是怎么定位,如何获取DataGrid单元格的定位?由于滚动条移动后不能通过对DataGrid的推算来获取定位了.
sonny72
2005-02-02
打赏
举报
回复
肯定有办法?
比如说能不能获取滚动条的移动参数?
我不知道怎么获取!
或者还有其它好办法!
北京的雾霾天
2005-02-02
打赏
举报
回复
你这样不行吗?在滚动条移动时把你的菜单隐藏掉,当用鼠标点击时再显示出来不也可以吗?
harisonh2l
2005-02-02
打赏
举报
回复
up
北京的雾霾天
2005-02-02
打赏
举报
回复
原来是这个意思啊,那就不知道了.
加载更多回复(5)
EasyUI应用(项目实战)
jquery入门基础,jquery赋值取值,事件处理和绑定,提交数据,
datagrid
控件
显示数据,分页,事件处理;Tabs
控件
动态创建多标签;datebox日期
时
间
控件
的赋值和取值;window弹出窗口应用;tree创建树形菜单,部门列表等,panel
控件
的使用;progressbar进度条的应用;dialog
控件
的使用;
WPF学习笔记(2):
准确
定位
弹出窗
效果图:使弹出的列表框紧随在单元格的下边缘。 第一次,尝试在XAML中设置Popup的
定位
方式:Placement="Mouse"。基本能够
定位
,但当在输入前
移动
鼠标,列表框就会随鼠标位置显示,偏离了预
定位
置。 第二次,尝试在XAML中设置Popup的
定位
目标:PlacementTarget="{Binding ElementName=txtAcctName}">。但由于TextBo...
c# 窗体开发2 高级
控件
的使用
1.单选按钮(RadioButton) 同一组中其他单选按钮不能同
时
选定 分组形式:panel GoupBox 窗体 方法: 属性 说明 Appearance RadioButton
控件
的显示与命令按钮相似 Checked 确定是否已选定
控件
方法 ...
0.uiautomation自动化库的详细目录索引
不过,请注意,在标准的UI自动化API中并没有名为“TextChildPattern”的模式,此处的解释基于对概念的推测和类比。然而,在实际编程环境中,并没有标准的"StylesPattern"这一概念,但类似的样式或外观相关的API和模式在不同的框架中是存在的,例如CSS(层叠样式表)在网页开发中的应用。具体来说,当一个
控件
包含多个可以被单独选择的项目
时
(例如列表框中的选项、文档中的文本区域等),AccessibleSelection就描述了这些项目如何通过键盘或其他辅助设备
进行
选择、聚焦和导航的功能。
C#对
DataGrid
View操作
C#针对
datagrid
view 操作收集的一些资料,内容比较乱,以后再整理 C#对
DataGrid
View
进行
添加、修改、删除数据操作 数据库用的是本地服务器(MySql): 设定全局变量: MySqlConnection conn; MySqlDataAdapter adapter; MySqlTransaction trans;
C#
110,499
社区成员
642,566
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章