你好。
一般在说C#里的grid的时候。要说明是aspnet里的还是winform里的。
如果你说的是winform里的。那么可以这样 *** 作。
if(thisdataGridViewCurrentCell != null){
DataGridViewCell cell = thisdataGridViewCurrentCell;
//cell就是当前光标所在的单元格
int row = cellRowIndex;
int col = cellColumnIndex;
//row 和 col 就是该单元格的行列序号,也就是它的具体位置。
}
==================================================================
如果想将光标设定到grid中的具体某个位置。可以这么写。
举例:想把光标焦点定位在第2行第3列。
thisdataGridViewCurrentCell = thisdataGridViewRows[1]Cells[2];thisdataGridViewBeginEdit(true);//这句可以让单元格开始编辑状态
谢谢,请采纳。
private void button1_Click(object sender, EventArgs e)
{
//当前光标
Cursor myCursor = CursorCurrent;
Graphics g = panel1CreateGraphics();
Rectangle rec = new Rectangle(
new Point(10, 10),
new Size(myCursorSizeWidth + 5, myCursorSizeHeight + 5));
//以拉伸模式绘制光标
myCursorDrawStretched(g, rec);
}
#region 得到光标在屏幕上的位置
[DllImport("user32")]
public static extern bool GetCaretPos(out Point lpPoint);
[DllImport("user32dll")]
private static extern IntPtr GetForegroundWindow();
[DllImport("user32dll")]
private static extern IntPtr GetFocus();
[DllImport("user32dll")]
private static extern IntPtr AttachThreadInput(IntPtr idAttach, IntPtr idAttachTo, int fAttach);
[DllImport("user32dll")]
private static extern IntPtr GetWindowThreadProcessId(IntPtr hWnd, IntPtr ProcessId);
[DllImport("kernel32dll")]
private static extern IntPtr GetCurrentThreadId();
[DllImport("user32dll")]
private static extern void ClientToScreen(IntPtr hWnd, ref Point p);
private Point CaretPos()
{
IntPtr ptr = GetForegroundWindow();
Point p = new Point();
//得到Caret在屏幕上的位置
if (ptrToInt32() != 0)
{
IntPtr targetThreadID = GetWindowThreadProcessId(ptr, IntPtrZero);
IntPtr localThreadID = GetCurrentThreadId();
if (localThreadID != targetThreadID)
{
AttachThreadInput(localThreadID, targetThreadID, 1);
ptr = GetFocus();
if (ptrToInt32() != 0)
{
GetCaretPos(out p);
ClientToScreen(ptr, ref p);
}
AttachThreadInput(localThreadID, targetThreadID, 0);
}
}
return p;
}
#endregion
如果你想在点击按钮中获得这个textbox的话,那么thisActiveControl是不行的
可以如下做:
定义一个TextBox的私有对象,初始为null
为form中每一个TextBox添加Enter事件
如果TextBox触发Enter事件,那么就把这个私有对象设为谁,就好了,
可以用GetCursorPos函数获取光标位置;
函数功能:该函数检取光标的位置,以屏幕坐标表示。
函数原型:BOOL GetCursorPos(LPPOINT lpPoint);
参数:
IpPoint:POINT结构指针,该结构接收光标的屏幕坐标。
Visual Basic 60 函数声明:
[Public/Private] Declare Function GetCursorPos Lib "user32" Alias "GetCursorPos" (lpPoint As POINTAPI) As Long
使用时要先定义一个数据结构:
Public Type POINTAPI
x As Long
y As Long
End Type
结果:
DeskTopPos:
X: 680 Y: 592
ClientPos:
X: 586 Y: 444
请按任意键继续
代码:
#include <stdioh>
#include "stdlibh"
#include <Windowsh>
main()
{
HWND hConsole = FindWindow("ConsoleWindowClass", NULL);
POINT pt;
GetCursorPos(&pt);
printf("DeskTopPos:\nX:%4i Y:%4i\n", ptx, pty);
ScreenToClient(hConsole, &pt);
printf("ClientPos:\nX:%4i Y:%4i\n", ptx, pty);
fflush(stdin);
system("pause");
}
函数连接:
>
//始终让光标保持在最左边 private void maskedTextBox1_Enter(object sender, EventArgs e) { maskedTextBox1SelectionStart = 0; } private void maskedTextBox1_MouseClick(object sender, MouseEventArgs e) { maskedTextBox1SelectionStart = 0; }
以上就是关于C#gridcontrol如何定位光标在哪个单元格以及在这个单元格的具体位置全部的内容,包括:C#gridcontrol如何定位光标在哪个单元格以及在这个单元格的具体位置、C#获取系统光标、C#如何获取reachtextbox光标的屏幕坐标等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)