下午好位置,WPF C#问题与得到passwordBox(X,Y)
我需要得到PasswordBox这是什么地方放置我的形式被称为“LogInWindow.xaml”上的位置,因为我想模拟psyhical /鼠标点击该文本框。
我媒体链接有其接受两个参数的功能,这是做点击这些参数为:x & Y,它应该是目标控制的位置,这里是功能:
public static void LeftMouseClick(int xpos, int ypos)
{
SetCursorPos(xpos, ypos);
mouse_event(MOUSEEVENTF_LEFTDOWN, xpos, ypos, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, xpos, ypos, 0, 0);
}
所以我很在这里失踪是xpos
和ypos
(目标控制的坐标),这里是其中一个方法我试图让位置,但它不是很遗憾工作:
Point relativePoint = txtPassword.TransformToAncestor(Application.Current.MainWindow)
.Transform(new Point(0, 0));
我得到了错误的TX tPassword说: 错误14字段初始值设定项不能引用非静态字段,方法或属性'Main.LogInWindow.txtPassword'
我终于通过@FrancisLord建议做了这个工作。
但现在我面临的另一个问题,我想测试这一另一台计算机/显示器上,和我复制我的.exe文件,我发现这是行不通的另一台机器上,我的开发机器上我看到了我的功能LeftMouseClick
工作正常,因为它触发“button1”,我正在寻找,并在另一台机器看起来像它不模拟点击,也许它找不到button1的位置或任何://:/// 这里是我的代码:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
relativePoint = this.button1.TransformToAncestor(this)
.Transform(new Point(0, 0));
LeftMouseClick((int)relativePoint.X, (int)relativePoint.Y);
//restOFcode
}
只是一个简单的问题:你为什么要模拟点击?它是专注于文本框?如果是这样,我相信WPF有一个比模拟鼠标点击更好的方法:) –
因为我正在使用触摸屏,并以某种方式在较新的操作系统,如W8.1和W10,它记得最后一步我做到了无论我触摸它不断重复该按钮(按钮我presed),我发现只有取消的方式是当用户注销模拟点击屏幕上的somehwere,这将取消以前的行动 –
这真的很奇怪,从来没有见过类似的东西 –