是的,可以使用此代码。效果很好。
这适用于你的班级
const int EM_GETFIRSTVISIBLELINE = 0x00CE;
[System.Runtime.InteropServices.DllImport("User32")]
static extern int SendMessage(IntPtr hwnd, int msg, int wParam, int lParam);
这是你的方法
int ii = SendMessage(textBox1.Handle, EM_GETFIRSTVISIBLELINE, 0, 0);
textBox1.Focus();
textBox1.SelectionLength = 0;
textBox1.SelectionStart = textBox1.GetFirstCharIndexFromLine(ii);
但是在我的构建错误列表中,我收到此警告,我不知道如何修复
因为它是P / Invoke方法,'tWUtil.SendMessage(IntPtr,int,int, int)'应该在名为NativeMethods的类中定义, SafeNativeMethods,或UnsafeNativeMethods。
答案 0 :(得分:0)
这是CA1060:将P / Invokes移动到NativeMethods类验证。
原因一种方法使用平台调用服务来访问非托管代码,并且不是其中一个NativeMethods的成员 类。
ca1060-move-p-invokes-to-nativemethods-class
如何修复违规行为
要修复违反此规则的问题,请将方法移至相应的位置 NativeMethods类。对于大多数应用程序,将P / Invokes移动到新的 名为NativeMethods的类就足够了。
等...
答案 1 :(得分:0)
满足CA1060:将P / Invokes移动到NativeMethods类验证。
这适用于您的方法
textBox1.Focus();
const int EM_GETFIRSTVISIBLELINE = 0x00CE;
int ii = NativeMethods.SendMessage(textBox1.Handle, EM_GETFIRSTVISIBLELINE, 0, 0);
textBox1.Focus();
textBox1.SelectionLength = 0;
textBox1.SelectionStart = textBox1.GetFirstCharIndexFromLine(ii);
你把它变成了一个类
public static class NativeMethods
{
[System.Runtime.InteropServices.DllImport("User32")]
internal static extern int SendMessage(IntPtr hwnd, int msg, int wParam, int lParam);
}