我用DataGridView显示数据库中的数据,但是出现了滚动条(水平和竖直),我想让滚动条消失,用鼠标来替代它的功能。最好鼠标的默认焦点在第一行(注意不是单元格,用一条线显示),鼠标滚动的时候,显示线跟着移动。请问代码怎么写?
29 个解决方案
#1
这个。。。
功能是可以实现的,过程不好口述,得自己发挥了
功能是可以实现的,过程不好口述,得自己发挥了
#2
怎么不好口述?帮帮忙嘛,用代码还是改属性?总能说清楚的
#3
public void Form5_MouseWheel(object sender, MouseEventArgs e)
{
int index=dataGridView1.SelectedRows[0].Index;
System.Drawing.Point p = PointToScreen(e.Location);
if (WindowFromPoint(p.X, p.Y) == dataGridView1.Handle.ToInt32())
{
if (e.Delta == 120)
{
if (index >= 1)
{
dataGridView1.Rows[index - 1].Selected = true;
}
}
else if (e.Delta < 0)
{
dataGridView1.Rows[index + 1].Selected = true;
}
dataGridView1.Focus();
}
}
private void dataGridView1_MouseEnter(object sender, EventArgs e)
{
this.MouseWheel += new MouseEventHandler(Form5_MouseWheel);
}
我捣鼓了一下,这个实现了滚动滑轮记录跟着移动,但是移到dataGridView1显示的范围边缘下面就看不见了
你看看有什么办法解决
#4
public void Form5_MouseWheel(object sender, MouseEventArgs e)
{
int index=dataGridView1.SelectedRows[0].Index;
System.Drawing.Point p = PointToScreen(e.Location);
if (WindowFromPoint(p.X, p.Y) == dataGridView1.Handle.ToInt32())
{
if (e.Delta == 120)
{
if (index >= 1)
{
dataGridView1.Rows[index - 1].Selected = true;
}
}
else if (e.Delta < 0)
{
dataGridView1.Rows[index + 1].Selected = true;
}
dataGridView1.Focus();
this.dataGridView1.FirstDisplayedScrollingRowIndex = index;//始终显示选中的行
}
}
private void dataGridView1_MouseEnter(object sender, EventArgs e)
{
this.MouseWheel += new MouseEventHandler(Form5_MouseWheel);
}
搞定了 Lz试试吧
#5
//最上面忘了两行
[DllImport("user32.dll")]
public static extern int WindowFromPoint(int xPoint, int yPoint);
#6
//Form.designer.cs里面在datagridview的地方加入鼠标滚轮事件
this.dataGridView1.MouseWheel += new System.Windows.Forms.MouseEventHandler(this.dataGridView1_MouseWheel);
private void dataGridView1_MouseWheel(object sender, MouseEventArgs e)
{
int rowIndex = this.dataGridView1.CurrentRow.Index;
this.dataGridView1.ClearSelection();
if (e.Delta > 0)
{
if (rowIndex > 0)
{
this.dataGridView1.CurrentCell = this.dataGridView1.Rows[rowIndex - 1].Cells[0];
this.dataGridView1.Rows[rowIndex - 1].Selected = true;
}
else
{
this.dataGridView1.CurrentCell = this.dataGridView1.Rows[rowIndex].Cells[0];
this.dataGridView1.Rows[rowIndex].Selected = true;
}
}
else
{
if (rowIndex < this.dataGridView1.Rows.Count - 1)
{
this.dataGridView1.CurrentCell = this.dataGridView1.Rows[rowIndex + 1].Cells[0];
this.dataGridView1.Rows[rowIndex + 1].Selected = true;
}
else
{
this.dataGridView1.CurrentCell = this.dataGridView1.Rows[rowIndex].Cells[0];
this.dataGridView1.Rows[rowIndex].Selected = true;
}
}
}
#7
至于你说的选中一行而不是一个单元格 设置SelectionMode属性为FullRowSelect
#8
农民牛叉呀。
#9
谢谢wnyxy和jiaht2009两位,我先试试,结贴加分给你俩......
#10
我用的是VS2010,上面没有SelectionMode属性啊
#11
datagridview里也有的
#12
滚动条不显示 ScrollBars设为none知道吧
#13
这个是知道啦,不过ScrollBars设为none了后,就只能看到当前的数据了,下面的都看不到了。。。。。。
刚试了下上面的代码,都不能通过,不知道是不是我弄错了什么,两位牛人多指点些我容易忽略的地方,我好多东西不懂的。。。。。。
刚试了下上面的代码,都不能通过,不知道是不是我弄错了什么,两位牛人多指点些我容易忽略的地方,我好多东西不懂的。。。。。。
#14
你看我4楼不是加了一句么?
this.dataGridView1.FirstDisplayedScrollingRowIndex = index;//始终显示选中的行
this.dataGridView1.FirstDisplayedScrollingRowIndex = index;//始终显示选中的行
#15
//Form.designer.cs里面在datagridview的地方加入鼠标滚轮事件
this.dataGridView1.MouseWheel += new System.Windows.Forms.MouseEventHandler(this.dataGridView1_MouseWheel);
这个事件一定要加入,这个事件是在datagridview得到焦点以后,鼠标的滚轮在上面来回滚触发的
this.dataGridView1.MouseWheel += new System.Windows.Forms.MouseEventHandler(this.dataGridView1_MouseWheel);
这个事件一定要加入,这个事件是在datagridview得到焦点以后,鼠标的滚轮在上面来回滚触发的
#16
你先用鼠标点击一下datagridview 然后吧啦鼠标滚轮
别说你的鼠标没有。。。
别说你的鼠标没有。。。
#17
to 15楼
在Form.designer.cs里面在datagridview的地方加入鼠标滚轮事件了,加了后就显示有错误啊
dataGridView1_MouseWheel下有红划线啊
to 14楼
我是新手,你的那个win32 API调用我都没用过。。。。。。
详细讲下,是要加那个什么 using <mscorlib.dll> 吧,我很不懂。。。。。。
在Form.designer.cs里面在datagridview的地方加入鼠标滚轮事件了,加了后就显示有错误啊
dataGridView1_MouseWheel下有红划线啊
to 14楼
我是新手,你的那个win32 API调用我都没用过。。。。。。
详细讲下,是要加那个什么 using <mscorlib.dll> 吧,我很不懂。。。。。。
#18
加个using System.Runtime.InteropServices;
#19
或者你把
[DllImport("user32.dll")]改成
[System.Runtime.InteropServices.DllImport("user32.dll")]
[DllImport("user32.dll")]改成
[System.Runtime.InteropServices.DllImport("user32.dll")]
#20
现在我的编译是不出错了,但是结果跟我以前的没什么区别。。。。。。
我在属性栏里就没找到SelectionMode属性和MouseWheel属性。。。。。。
我在属性栏里就没找到SelectionMode属性和MouseWheel属性。。。。。。
#21
#22
datagridview 的属性栏里真的没有
#23
不带这样鄙视人的......
#24
你先把我们的代码保存下去慢慢看看吧
国庆节快乐 放假喽~~~~~~~~~~~~~~~~~
国庆节快乐 放假喽~~~~~~~~~~~~~~~~~
#25
恩,解放了,结帖的时候会把分给你的......
#26
农民很无语哦。。。
我在属性栏里就没找到SelectionMode属性和MouseWheel属性。。。。。。
---》
SelectionMode是datagridview的属性
MouseWheel是datagridview的事件
我在属性栏里就没找到SelectionMode属性和MouseWheel属性。。。。。。
---》
SelectionMode是datagridview的属性
MouseWheel是datagridview的事件
#27
好贴,找了很长时间,一下就搞定了!佩服!
#28
先坐下,有空慢慢研究2位高手思路!
#29
上面的设置上下滚动,请问如何设置左右滚动啊?
#1
这个。。。
功能是可以实现的,过程不好口述,得自己发挥了
功能是可以实现的,过程不好口述,得自己发挥了
#2
怎么不好口述?帮帮忙嘛,用代码还是改属性?总能说清楚的
#3
public void Form5_MouseWheel(object sender, MouseEventArgs e)
{
int index=dataGridView1.SelectedRows[0].Index;
System.Drawing.Point p = PointToScreen(e.Location);
if (WindowFromPoint(p.X, p.Y) == dataGridView1.Handle.ToInt32())
{
if (e.Delta == 120)
{
if (index >= 1)
{
dataGridView1.Rows[index - 1].Selected = true;
}
}
else if (e.Delta < 0)
{
dataGridView1.Rows[index + 1].Selected = true;
}
dataGridView1.Focus();
}
}
private void dataGridView1_MouseEnter(object sender, EventArgs e)
{
this.MouseWheel += new MouseEventHandler(Form5_MouseWheel);
}
我捣鼓了一下,这个实现了滚动滑轮记录跟着移动,但是移到dataGridView1显示的范围边缘下面就看不见了
你看看有什么办法解决
#4
public void Form5_MouseWheel(object sender, MouseEventArgs e)
{
int index=dataGridView1.SelectedRows[0].Index;
System.Drawing.Point p = PointToScreen(e.Location);
if (WindowFromPoint(p.X, p.Y) == dataGridView1.Handle.ToInt32())
{
if (e.Delta == 120)
{
if (index >= 1)
{
dataGridView1.Rows[index - 1].Selected = true;
}
}
else if (e.Delta < 0)
{
dataGridView1.Rows[index + 1].Selected = true;
}
dataGridView1.Focus();
this.dataGridView1.FirstDisplayedScrollingRowIndex = index;//始终显示选中的行
}
}
private void dataGridView1_MouseEnter(object sender, EventArgs e)
{
this.MouseWheel += new MouseEventHandler(Form5_MouseWheel);
}
搞定了 Lz试试吧
#5
//最上面忘了两行
[DllImport("user32.dll")]
public static extern int WindowFromPoint(int xPoint, int yPoint);
#6
//Form.designer.cs里面在datagridview的地方加入鼠标滚轮事件
this.dataGridView1.MouseWheel += new System.Windows.Forms.MouseEventHandler(this.dataGridView1_MouseWheel);
private void dataGridView1_MouseWheel(object sender, MouseEventArgs e)
{
int rowIndex = this.dataGridView1.CurrentRow.Index;
this.dataGridView1.ClearSelection();
if (e.Delta > 0)
{
if (rowIndex > 0)
{
this.dataGridView1.CurrentCell = this.dataGridView1.Rows[rowIndex - 1].Cells[0];
this.dataGridView1.Rows[rowIndex - 1].Selected = true;
}
else
{
this.dataGridView1.CurrentCell = this.dataGridView1.Rows[rowIndex].Cells[0];
this.dataGridView1.Rows[rowIndex].Selected = true;
}
}
else
{
if (rowIndex < this.dataGridView1.Rows.Count - 1)
{
this.dataGridView1.CurrentCell = this.dataGridView1.Rows[rowIndex + 1].Cells[0];
this.dataGridView1.Rows[rowIndex + 1].Selected = true;
}
else
{
this.dataGridView1.CurrentCell = this.dataGridView1.Rows[rowIndex].Cells[0];
this.dataGridView1.Rows[rowIndex].Selected = true;
}
}
}
#7
至于你说的选中一行而不是一个单元格 设置SelectionMode属性为FullRowSelect
#8
农民牛叉呀。
#9
谢谢wnyxy和jiaht2009两位,我先试试,结贴加分给你俩......
#10
我用的是VS2010,上面没有SelectionMode属性啊
#11
datagridview里也有的
#12
滚动条不显示 ScrollBars设为none知道吧
#13
这个是知道啦,不过ScrollBars设为none了后,就只能看到当前的数据了,下面的都看不到了。。。。。。
刚试了下上面的代码,都不能通过,不知道是不是我弄错了什么,两位牛人多指点些我容易忽略的地方,我好多东西不懂的。。。。。。
刚试了下上面的代码,都不能通过,不知道是不是我弄错了什么,两位牛人多指点些我容易忽略的地方,我好多东西不懂的。。。。。。
#14
你看我4楼不是加了一句么?
this.dataGridView1.FirstDisplayedScrollingRowIndex = index;//始终显示选中的行
this.dataGridView1.FirstDisplayedScrollingRowIndex = index;//始终显示选中的行
#15
//Form.designer.cs里面在datagridview的地方加入鼠标滚轮事件
this.dataGridView1.MouseWheel += new System.Windows.Forms.MouseEventHandler(this.dataGridView1_MouseWheel);
这个事件一定要加入,这个事件是在datagridview得到焦点以后,鼠标的滚轮在上面来回滚触发的
this.dataGridView1.MouseWheel += new System.Windows.Forms.MouseEventHandler(this.dataGridView1_MouseWheel);
这个事件一定要加入,这个事件是在datagridview得到焦点以后,鼠标的滚轮在上面来回滚触发的
#16
你先用鼠标点击一下datagridview 然后吧啦鼠标滚轮
别说你的鼠标没有。。。
别说你的鼠标没有。。。
#17
to 15楼
在Form.designer.cs里面在datagridview的地方加入鼠标滚轮事件了,加了后就显示有错误啊
dataGridView1_MouseWheel下有红划线啊
to 14楼
我是新手,你的那个win32 API调用我都没用过。。。。。。
详细讲下,是要加那个什么 using <mscorlib.dll> 吧,我很不懂。。。。。。
在Form.designer.cs里面在datagridview的地方加入鼠标滚轮事件了,加了后就显示有错误啊
dataGridView1_MouseWheel下有红划线啊
to 14楼
我是新手,你的那个win32 API调用我都没用过。。。。。。
详细讲下,是要加那个什么 using <mscorlib.dll> 吧,我很不懂。。。。。。
#18
加个using System.Runtime.InteropServices;
#19
或者你把
[DllImport("user32.dll")]改成
[System.Runtime.InteropServices.DllImport("user32.dll")]
[DllImport("user32.dll")]改成
[System.Runtime.InteropServices.DllImport("user32.dll")]
#20
现在我的编译是不出错了,但是结果跟我以前的没什么区别。。。。。。
我在属性栏里就没找到SelectionMode属性和MouseWheel属性。。。。。。
我在属性栏里就没找到SelectionMode属性和MouseWheel属性。。。。。。
#21
#22
datagridview 的属性栏里真的没有
#23
不带这样鄙视人的......
#24
你先把我们的代码保存下去慢慢看看吧
国庆节快乐 放假喽~~~~~~~~~~~~~~~~~
国庆节快乐 放假喽~~~~~~~~~~~~~~~~~
#25
恩,解放了,结帖的时候会把分给你的......
#26
农民很无语哦。。。
我在属性栏里就没找到SelectionMode属性和MouseWheel属性。。。。。。
---》
SelectionMode是datagridview的属性
MouseWheel是datagridview的事件
我在属性栏里就没找到SelectionMode属性和MouseWheel属性。。。。。。
---》
SelectionMode是datagridview的属性
MouseWheel是datagridview的事件
#27
好贴,找了很长时间,一下就搞定了!佩服!
#28
先坐下,有空慢慢研究2位高手思路!
#29
上面的设置上下滚动,请问如何设置左右滚动啊?