【发布时间】:2019-04-26 08:23:12
【问题描述】:
如何在事件处理方法中通过引用发送变量?
我尝试使用委托将其发送到另一个保存我需要的变量的函数并且它可以工作。但是,它会创建变量的副本,并且我无法从委托函数更改主类中的值。然后我考虑将函数移动到一个类并将所有变量存储在类中,以便它们可以获取和设置。但是,因为它是一个类并且不继承主类,所以无法找到 WPF/XAML 对象。我尝试过继承主类,但是因为我在主类中创建了这个类,并且它有效地继承了自身,所以它进入了一个无法逃脱的循环。
public partial class MainWindow : Window
{
public class Program : MainWindow
{
public string Word { get; set; }
public void WhenPressed_1(object sender, RoutedEventArgs e)
{
lable_1.Content = Word;
}
}
public MainWindow()
{
InitializeComponent();
Program test = new Program();
Button_1.Click += delegate (object sender, RoutedEventArgs e) { test.WhenPressed_1(sender, e); };
}
}
它位于 Program test = new Program();它打破了。
【问题讨论】:
-
我猜你有一个意外的循环/递归 -> 通过创建
new Program将创建一个new MainWindowclass,因为Program继承自它并在MainWindow内部创建一个新的Program(并且创建/循环重新开始,直到没有更多的“内存空间”剩下 -> stackoverflow) -
当您从主窗口单击一个按钮时,您需要在另一个类中进行一些处理,然后您需要更改主窗口的标签内容??
-
我刚刚使用了一个标签(WPF 对象)来测试代码,看看会发生什么。我想要做的是有一个事件处理程序(如点击事件),然后做一些代码。该代码需要一些变量,这些变量存储在主窗口中但无法访问。
标签: c# wpf oop inheritance