gpt4 book ai didi

c# - 为什么我不能从事件处理程序中访问变量?

转载 作者:行者123 更新时间:2023-11-30 17:19:44 25 4
gpt4 key购买 nike

我正在制作一个项目,我在 Visual Studio 上使用 C# 创建整个项目(包括模板)。

我制作了模板并刚刚开始处理事件,我想为我创建的 Canvas 制作一个事件 MouseLeftButtonDown,该事件将记录鼠标位置。

这是我的代码:

 public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}

private char tester;
private Point down1;
private Point up1;

private void Grid1_Loaded(object sender, RoutedEventArgs e)
{
RowDefinition row1 = new RowDefinition();
RowDefinition row2 = new RowDefinition();

row1.Height = new GridLength(40);
row2.Height = new GridLength(1, GridUnitType.Star);

Grid1.RowDefinitions.Add(row1);
Grid1.RowDefinitions.Add(row2);

Canvas canvas1 = new Canvas();
canvas1.Background = new SolidColorBrush(Colors.Beige);
Grid.SetRow(canvas1, 1);
Grid1.Children.Add(canvas1);
canvas1.MouseLeftButtonDown += new RoutedEventHandler(canvas1_MouseLeftButtonDown);
canvas1.MouseLeftButtonUp += new RoutedEventHandler(canvas1_MouseLeftButtonUp);


Button btnRect = new Button();
btnRect.Content = "Rectangulo";
btnRect.Margin = new Thickness(5, 5, 5, 5);
btnRect.HorizontalAlignment = HorizontalAlignment.Left;
btnRect.VerticalAlignment = VerticalAlignment.Center;
Grid.SetRow(btnRect, 0);
Grid1.Children.Add(btnRect);
//btnRect.Click += new RoutedEventHandler(btnRect_Click);

Button btnEllip = new Button();
btnEllip.Content = "Ellipse";
btnEllip.Margin = new Thickness(75, 5, 5, 5);
btnEllip.HorizontalAlignment = HorizontalAlignment.Left;
btnEllip.VerticalAlignment = VerticalAlignment.Center;
Grid.SetRow(btnEllip, 0);
Grid1.Children.Add(btnEllip);
//btnEllip.Click += new RoutedEventHandler(btnEllip_Click);

}

这是我的事件:

private void canvas1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
down1 = e.GetPosition(canvas1);
}
}
}

我尝试执行 down1 = e.GetPosition(canvas1); 但我在 (canvas1) 上遇到错误; “名称 canvas1 在当前上下文中不存在”

我已经做了一个类似的项目而无需编写模板,没有任何问题..

最佳答案

but I'm getting an error on (canvas1);

那是因为 canvas1 是另一个方法的局部变量,不能在 canvas1_MouseLeftButtonDown() 内部访问。

您可以使用:

 Canvas c = sender as Canvas;  // or Canvas c = (Canvas) sender;
down1 = e.GetPosition(c);

关于c# - 为什么我不能从事件处理程序中访问变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4627922/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com