我有一个复选框,当我点击它时,它应该允许用户在画布上单击两个位置,然后出现一个带有两次点击坐标的消息框,然后复选框应取消选中。我尝试了各种各样的事情并且遇到了一些问题。
我想在与复选框aka routedeventargs相关的函数中处理整个事情,而不是画布点击方法。
我可以弄清楚#2但是1和3让我难过。
这是从xaml中的mousedown画布订阅的方法示例:
public void get_Scaling(object sender, MouseButtonEventArgs e)
{
Point startPoint;
Point endPoint;
while (Scale_btn.IsChecked == true)
{
startPoint = e.GetPosition(canvas1);
endPoint = e.GetPosition(canvas1);
System.Windows.MessageBox.Show("Start point is" + startPoint + "and end point is" + endPoint, "test", MessageBoxButton.OK, MessageBoxImage.Information);
}
}
答案 0 :(得分:2)
我看到了几个问题。
1)以编程方式取消选中CheckBox的方法是使用 IsChecked 属性。
Scale_btn.IsChecked = false;
2)请记住,你的while循环是在一个MouseDown事件处理程序中运行的。您将无法在while循环中捕获两个不同的MouseDown事件。为了实现您的目标,您需要将Point对象置于事件处理程序之外,并使用另一个变量来跟踪您正在捕获的单击。
bool firstPointCaptured = false;
Point startPoint;
Point endPoint;
private void get_Scaling(object sender, MouseButtonEventArgs e)
{
if (Scale_btn.IsChecked == true)
{
if (!firstPointCaptured)
{
startPoint = Mouse.GetPosition(canvas1);
firstPointCaptured = true;
}
else
{
endPoint = Mouse.GetPosition(canvas1);
System.Windows.MessageBox.Show("Start point is" + startPoint + "and end point is" + endPoint, "test", MessageBoxButton.OK, MessageBoxImage.Information);
Scale_btn.IsChecked = false;
firstPointCaptured = false;
}
}
}
答案 1 :(得分:2)