c# - 试图将 MainWindow 继承到子类中但得到系统 stackoverflow
问题描述
如何在事件处理程序方法中通过引用发送变量?
我尝试使用委托将其发送到另一个保存我需要的变量的函数并且它可以工作。但是,它会创建变量的副本,并且我无法从委托函数更改主类中的值。然后我考虑将函数移动到一个类并将所有变量存储在类中,以便它们可以获取和设置。但是,因为它是一个类并且不继承主类,所以无法找到 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(); 它打破了。
解决方案
您可以将 MainWindow 对象传递给程序类并更改所需的值
public partial class MainWindow : Window, ICommon
{
public MainWindow()
{
InitializeComponent();
Program test = new Program();
thisButton.Click += delegate(object sender, RoutedEventArgs e) { test.WhenPressed_1(this); };
}
public void SetValueInMain()
{
// Set Main values
}
public class Program
{
public string Word { get; set; }
public void WhenPressed_1(ICommon mainWind)
{
mainWind.SetValueInMain();
}
}
}
public interface ICommon
{
void SetValueInMain();
}
推荐阅读
- php - 当我尝试更新表中的信息时是否出现错误?
- python - 已解决:如果找不到数据,sqlalchemy session.query...first() 会崩溃
- git - 错误:无法锁定配置文件 .git/config:没有这样的文件或目录
- c# - 如何在 DocuSign 中预填充带有验证的字段?
- java - 如何在 Clojure 中使用 java.util.stream.Stream?
- ruby-on-rails - 如何在 API 模式下在 Rails 应用程序中实现 JWT 身份验证
- c - 检查字符串是否为空,然后继续
- hyperlink - Maximo启动中心中的超链接?
- javascript - 为 SASS(编译、Prod 中的缩小)、JS(Concat + 缩小)和多个 Vue 单页应用程序构建 Webpack 4 配置
- python - Python - 多处理过程模块 - 未定义函数变量?