两个问题
1:TextBox是多行的 如何使TextBox的光标始终处于能看到的第一个文字的前面 也就是控件的座上角 (或者可以描述为让光标随着滚动条的移动改变位置)
2:如何在TextBox里实现右键单击移动光标位置(让右键单击和左键单击有一样的效果)
1:TextBox是多行的 如何使TextBox的光标始终处于能看到的第一个文字的前面 也就是控件的座上角 (或者可以描述为让光标随着滚动条的移动改变位置)
2:如何在TextBox里实现右键单击移动光标位置(让右键单击和左键单击有一样的效果)
解决方案 »
- c#中如何查找arraylist中是否包含某个字符
- 读取注册列表无法GetValueNames()
- 开发一个程序,程序里的图片列表里能像VS2008的控件一样自由拖动。
- 我现在Winform DataGridView首行使用下拉框,怎么才能实现?
- c#问题求解
- comboBox1.SelectedIndex 的值为什么会返回-1
- datagrid双击问题
- 关于“ System.Data.OleDb.OleDbException: 至少一个参数没有被指定值。”的错误,请教
- 求解!使用TcpClient.connect建立连接速度缓慢!
- C# 这代码什么意思?
- 小弟求助,关于C#调用VC6.0++开发的DLL文件的问题!!!!!
- installshield 12软件打包问题
第2个问题,下面代码可以实现,需要using System.Runtime.InteropServices; [DllImport("User32")]
public extern static void mouse_event(int dwFlags, int dx, int dy, int dwData, IntPtr dwExtraInfo); [DllImport("User32")]
public extern static void SetCursorPos(int x, int y); [DllImport("User32")]
public extern static bool GetCursorPos(out POINT p); [StructLayout(LayoutKind.Sequential)]
public struct POINT
{
public int X;
public int Y;
} public enum MouseEventFlags
{
Move = 0x0001,
LeftDown = 0x0002,
LeftUp = 0x0004,
RightDown = 0x0008,
RightUp = 0x0010,
MiddleDown = 0x0020,
MiddleUp = 0x0040,
Wheel = 0x0800,
Absolute = 0x8000
} private void AutoClick(int x, int y)
{
POINT p = new POINT();
GetCursorPos(out p);
try
{
SetCursorPos(p.X, p.Y);
mouse_event((int)(MouseEventFlags.LeftDown | MouseEventFlags.Absolute), 0, 0, 0, IntPtr.Zero);
mouse_event((int)(MouseEventFlags.LeftUp | MouseEventFlags.Absolute), 0, 0, 0, IntPtr.Zero);
}
finally
{
SetCursorPos(p.X, p.Y);
}
} private void textBox1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
AutoClick(e.X,e.Y);
}
}
textBox1.ContextMenu = new ContextMenu();
richtextbox.Focus();
找到textbox左上角的位置调用AutoClick方法,把里面的SetCursorPos(p.X, p.Y);
改成SetCursorPos(x,y);