你好,我有一个Windows窗体应用程序,在触摸屏上运行,它有文本框,用户输入数字。
当用户单击TextBox时,会弹出一个虚拟数字键盘。
private void textboxClicked(object sender, EventArgs e) // this code openes the numPad
{
curTextBox = sender as TextBox; // puts all the params in the curTextBox that i declared at the top of the class
curTextBox.Text = null; // clears the textbox
vnumPadForm.Location = PointToScreen(new Point(curTextBox.Right, curTextBox.Top));
vnumPadForm.Show();
}
我遇到的问题是,当用户单击最右边的文本框时,数字键盘超出了屏幕,所以只显示了一半。
如果文本框和屏幕边缘之间的空间太小,数字键盘会在文本框的左侧弹出,我该怎么做呢?
我还没找到解决办法
1条答案
按热度按时间z18hc3ub1#
假设vnumPadForm是一个Form,您可以计算它的宽度并测量它是否适合剩余的空间。
如注解中所述,您可以使用不同的方法计算窗口宽度,例如使用
Screen.PrimaryScreen.WorkingArea.Right
请注意,我在方法中初始化了vnumPadForm,因为我不知道它在哪里初始化。需要使用WindowState和StartPosition来设置如下所述的位置:
Form.Location doesn't work
我使用了BringToFront,这对您的情况可能是可选的。