首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何从DragDrop事件中定位datagridview行或单元格?

在使用DragDrop事件时,要定位DataGridView行或单元格,可以使用以下方法:

  1. 定义一个变量,用于存储拖动时的行索引或单元格索引。
  2. 在DragEnter事件中,获取鼠标所在行或单元格的索引,并将其赋值给变量。
  3. 在DragDrop事件中,使用变量中存储的行索引或单元格索引来定位行或单元格。

以下是一个简单的示例代码:

代码语言:csharp
复制
private int draggedRowIndex = -1;

private void dataGridView1_DragEnter(object sender, DragEventArgs e)
{
    // 获取鼠标所在行的索引
    Point clientPoint = dataGridView1.PointToClient(new Point(e.X, e.Y));
    int rowIndex = dataGridView1.HitTest(clientPoint.X, clientPoint.Y).RowIndex;

    // 如果鼠标在行上,则更新变量
    if (rowIndex >= 0)
    {
        draggedRowIndex = rowIndex;
    }
}

private void dataGridView1_DragDrop(object sender, DragEventArgs e)
{
    // 如果已经获取到行索引,则定位行
    if (draggedRowIndex >= 0)
    {
        DataGridViewRow draggedRow = dataGridView1.Rows[draggedRowIndex];
        // 在这里可以进行其他操作,例如将行拖动到其他位置
    }
}

这个示例代码中,我们使用了一个名为draggedRowIndex的变量来存储拖动时的行索引。在DragEnter事件中,我们获取鼠标所在行的索引,并将其赋值给变量。在DragDrop事件中,我们使用变量中存储的行索引来定位行。

需要注意的是,这个示例代码只是一个简单的示例,实际应用中可能需要更多的逻辑来处理拖动和定位行或单元格的操作。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C# winform DataGridView 常见属性

⑦ 禁止列或者的Resize ⑧ 列宽和高以及列头的高度和行头的宽度的自动调整 ⑨ 冻结列 ⑩ 列顺序的调整 ⑪ 行头列头的单元格 ⑫ 剪切板的操作 ⑬ 单元格的ToolTip的设置...用户在删除的时候,将会引发 DataGridView.UserDeletingRow 事件。 在这个事件里,可以判断条件并取消删除操作。...——————————————————————————– ⑨ DataGridView 冻结列 1) 列冻结 DataGridViewColumn.Frozen 属性为 True 时, 该列左侧的所有列被固定...&& (bool)boolVal) { e.ContextMenuStrip = this.ContextMenuStrip1; } } CellContextMenuStripNeeded 事件处理方法的参数...在该事件处理除了可以设定默认值以外,还可以指定某些特定的单元格的ReadOnly属性等。

3.6K40

c# WinForm开发 DataGridView控件的各种操作总结(单元格操作,属性设置)

用户在删除的时候,将会引发 DataGridView.UserDeletingRow 事件。 在这个事件里,能够推断条件并取消删除操作。...2)指定列自己主动调整 // 第一列自己主动调整 DataGridView1.Columns[0].AutoSizeMode =DataGridViewAutoSizeColumnMode.DisplayedCells...******DataGridView 冻结列 1) 列冻结 DataGridViewColumn.Frozen 属性为 True 时, 该列左側的全部列被固定, 横向滚动时固定列不随滚动栏滚动而左右移动...在该事件处理除了能够设定默认值以外,还能够指定某些特定的单元格的ReadOnly属性等。...{ e.ContextMenuStrip = this.ContextMenuStrip1; } } CellContextMenuStripNeeded 事件处理方法的參数

3.6K10

C#—— DataGridView控件的各种操作总结(单元格操作,属性设置)

用户在删除的时候,将会引发 DataGridView.UserDeletingRow 事件。 在这个事件里,可以判断条件并取消删除操作。...2)指定列自动调整 // 第一列自动调整 DataGridView1.Columns[0].AutoSizeMode =DataGridViewAutoSizeColumnMode.DisplayedCells...******DataGridView 冻结列 1) 列冻结 DataGridViewColumn.Frozen 属性为 True 时, 该列左侧的所有列被固定, 横向滚动时固定列不随滚动条滚动而左右移动...在该事件处理除了可以设定默认值以外,还可以指定某些特定的单元格的ReadOnly属性等。...bool && (bool)boolVal) { e.ContextMenuStrip = this.ContextMenuStrip1; } } CellContextMenuStripNeeded  事件处理方法的参数

5.7K32

【转】基于C#的WinFormDataGridView控件操作汇总

基于C#的WinFormDataGridView控件操作汇总 一、单元格内容的操作 *****// 取得当前单元格内容 Console.WriteLine(DataGridView1...2)指定列自动调整 // 第一列自动调整 DataGridView1.Columns[0].AutoSizeMode =DataGridViewAutoSizeColumnMode.DisplayedCells...******DataGridView 冻结列 1) 列冻结 DataGridViewColumn.Frozen 属性为 True 时, 该列左侧的所有列被固定, 横向滚动时固定列不随滚动条滚动而左右移动...在该事件处理除了可以设定默认值以外,还可以指定某些特定的单元格的ReadOnly属性等。...boolVal) { e.ContextMenuStrip = this.ContextMenuStrip1; } } CellContextMenuStripNeeded  事件处理方法的参数

5.1K50

Excel催化剂开源第23波-VSTO开发辅助录入功能关键技术

一般来说控件都是放到窗体任务窗格,但Excel同样支持将控件放到工作表单元格上,如前面提到的picturebox容器,放到单元格区域上,然后在容器上发图片,实现插入图片功能,同样地也可以存放单选、复选这些控件...自定义控件,可直接用到工作表单元格 具体实现原理 通过用户配置操作,将需要进行快速录入的区域记录下来,用SelectionChange事件来响应,若用户选择到这些单元格时,就激发事件方法,显示自定义控件...,并让光标定位到自定义控件的查找控件TextBox等待用户输入。...输入过程动态控制下方DataGridView的查找结果,用户可以按方向箭下上在结果中选择对应的条目,再按EnterTab键确定内容录入。...,例如此处的录入功能,按Enter是跳转到下一,按Tab是跳转到右侧列,实现键盘盲打录入不依赖鼠标实现。

1.3K10

Excel催化剂开源第13波-VSTO开发之DataGridView控件几个小坑

DataGridView最有优势之处在于,可以直接让DataTable直接绑定即可,同时带有丰富的事件可与用户交互,并且保留有用户常用的排序功能,筛选功能也容易实现,用Dataview来绑定数据源即可...使用DataGridView的一些小坑 DataGridView内复选框状态改变激活事件 在Excel催化剂的【工作表导航】功能,有用到DataGridView存储工作表信息,需要和用户交互的是用户点击复选框...+= dataGridView1_CellValueChanged; } } 需要加上这个事件才可生效,具体原理可自行百度 /// <summary...} } DataGridView手工排序问题 DataGridView原生功能没有实现通过按住某行拖动的方式实现不同行之间的排序问题。...此篇给大家扫清几个小坑,让大家开发过程,更顺畅,尽情地在业务逻辑代码上发挥,少关注底层这些莫名的坑坑洼洼。

1.1K50

【C#】让DataGridView输入实时更新数据源的计算列

本文适用Winform开发,且DataGridView的数据源为DataTable/DataView的情况。...当dgv绑定数据源后,它的每一就对应了数据源的一叫一项),这就是我所谓的【源】。...),但dt和dv没有,后者只到这一级,虽然可以通过DataRow[x]DataRowView[x]访问单元格的值,但在类层级上并不存在DataCell这样的表示单元格的实体类,也就是dt和dv的编辑...也就是如果要连续输入,必须在每次输入后用鼠标方向键取消全选并将光标定位到正确的位置~这不蛋疼吗,必须解决!首先为什么会全选的原因不明,我猜是由于数据源的更新反过来影响dgv所致。...二、解决键入后自动全选的问题 我是控件消息这块打的主意,dgv的单元格实际上承载了某种编辑控件(如TextBox,CheckBox),所以甭管它是什么原因全选,最后总该是收到了什么消息它才全选,那么我就用

5.1K20

DataGridView使用小结

dataGridView1的CellMouseDown事件添加处理程序: private void dataGridView1_CellMouseDown(object sender, DataGridViewCellMouseEventArgs...}                     //只选中一时设置活动单元格                     if (dataGridView1.SelectedRows.Count == 1)... = false;//必须在代码设置 4).显示图片 通常,我们将图片路径保存在数据库,但在dataGridView1要显示图片,可以进行如下操作: ①.添加一个DataGridViewTextBoxColumn...;//单元格内容居中显示 //行为 dataGridView1.AutoGenerateColumns = false;//不自动创建列 dataGridView1.AllowUserToAddRows...不启用删除 dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;//单击单元格选中整行 dataGridView1

2.2K20

DataGridView 密码列(显示为*号)的设置

曾经为在DataGridView设置密码列(显示为*号)而发愁,如何把Windows 窗体 DataGridView 的某一列的数据显示为“*”。 哈哈,今天终于搞定了。...需要在DataGridView的2个事件写代码真麻烦!...下面的代码把第4列设置为密码列(显示为*号):         ///         /// 单元格显示格式事件         ///        ...e.Value.ToString().Length);                 }             }         }         ///         /// 编辑单元格控件事件...        } 本文由来源 21aspnet,由 javajgs_com 整理编辑,其版权均为 21aspnet 所有,文章内容系作者个人观点,不代表 Java架构师必看 对观点赞同支持

2.2K30

WinForm使用DataGridView实现类似Excel表格的查找替换

在桌面程序开发过程我们常常使用DataGridView作为数据展示的表格,在表格我们可能要对数据进行查找或者替换。...窗体主要是查找替换文本的值,选中的查找范围和是否能设置查找范围变量;还包括4个事件,4个事件在GridDataWindow 添加用于响应操作。...实例化一个DataToolsWindow后对事件进行注册。重点是如何查找,因为替换和查找一样,只要查找到了替换就行了。...查找下一个 大概的思路就是按照【选定】的当前单元格为标记,首先以当前单元格为分界线向下查找,在查找的过程判断用户选择的是当前列还是整个数据表,如果是当前列只需要按查找当前列就行了。...如果是整个数据表查找则需要整行的每列都查找,如果查找到选中行查找的列就是找当前列前面的列(后面的列会在向下查找遍历到),如果不是选中行则整行第一列开始全部列查找。

1.6K41

DataGridView控件中加入ComboBox下拉列表框的实现

本文转载:http://www.cnblogs.com/luqingfei/archive/2007/03/28/691372.html 虽然在Visual Studio DataGridView...本文介绍一种只在当前编辑单元格显示下拉列表框的方法,供大家参考。   ...    cmb_Temp.DataSource = dtSex;     cmb_Temp.DropDownStyle = ComboBoxStyle.DropDownList; }   通常情况下我们都是数据库获取数据表...控件     this.dgv_User.Controls.Add(cmb_Temp); }   当用户选择的单元格移动到性别这一列时,我们要显示下拉列表框,添加如下事件 private void dgv_User_CurrentCellChanged...控件             this.dgv_User.Controls.Add(cmb_Temp);         }         // 当用户移动到性别这一列时单元格显示下拉列表框

3.5K20

DataGridView控件用法一:数据绑定

在绑定到包含多个列表表的数据源时,只需将DataMember属性设置为指定要绑定的列表表的字符串即可。...一、非绑定模式 所谓的非绑定模式就是DataGridView控件显示的数据不是来自于绑定的数据源,而是可以通过代码手动将数据填充到DataGridView控件,这样就为DataGridView控件增加了很大的灵活性...对象自动生成 DataGridViewButtonColumn 用于在单元格显示按钮,不会在绑定时自动生成,通常用来做未绑定列 DataGridViewComboBoxColumn 用户在单元格显示下拉列表...,不会在绑定时自动生成,通常需要手动进行数据绑定 DataGridViewLinkColumn 用于在单元格显示超链接,不会在绑定时自动生成,通常需要进行手动绑定数据 二、绑定模式 就是将已经存在的数据绑定到...在绑定到包含多个列表表的数据源时,只需将DataMember属性设置为指定要绑定的列表表的字符串即可。

3.7K20

Electron拖拽下载能力

1. h5 dragDrop简单介绍 dragdrop 是H5标准的新特性之一,针对每个HTML元素,可以设置一个draggable属性,true表示这个元素能够拖拽,false反之。...对于能拖拽的元素,其能够响应‘dragstart’,‘dragover’,‘dragenter’,‘dragleave’,‘dragend’事件,通过addEventListener可以获取相应的拖拽操作...每个事件提供event参数,在dragdrop场景下,多了dataTransfer属性,dataTransfer包含了拖拽相关的数据信息,例如: dragEffect: ['copy','move'...拖拽下载的实现 拖拽下载的难点在于:web页面拖拽出去后,无法感知拖拽的目标地址,因此无法实现下载。因此拖拽下载的问题可以简化为如何感知drop的目标路径。...,octet-stream等拖拽到desktop指定位置) Chrome: dataTransfer.setData('DownloadURL',[mime]:[filename]:[uri]) 我们则可以利用这个特性

3.4K60

C# WPF DataGrid获取单元格并改变背景色

01 概述 WPF 自带了一个表格控件datagrid,这个控件类似winfromdatagridview,在数据显示的时候也经常会用到,这节主要讲解如何后台代码获取到单元格控件并改变其相关属性:...DataGridCellsPresenter presenter = GetVisualChild(row);//函数调用,获取中所有单元格的集合...MinWidth="48"/> 04 解析 ① 因为我需要绑定SelectedCellsChanged事件...,所以前台将默认的选中模式修改为单元格选中模式: SelectionMode="Single" SelectionUnit="Cell" 这样修改后SelectionChanged这个事件将不再触发...在当SelectionUnit="Cell"时: 我是通过选中单元格对应的信息和表格控件绑定的集合匹配获取行号的: for (int i = 0; i < ShellViewModel.StudentList.Count

2.5K20
领券