【问题标题】:how to Acces a Button/Textbox..... from mainwindow in class如何从课堂上的主窗口访问按钮/文本框.....
【发布时间】:2021-09-25 18:13:31
【问题描述】:

我是 OOP 的新手,我想知道如何在我的编辑类中说,从主窗口获取这个文本框并清除它。我试过这个:

public partial class MainWindow : Window
    {
        Edit edit = new Edit();
        public MainWindow()
        {
            InitializeComponent();
           
        }

        private void ClearBtn_Click(object sender, RoutedEventArgs e)
        {
            //TxtBox.Clear();
            edit.Clear();
            
        }
    }

编辑类

public class Edit
    {
        MainWindow main = new MainWindow();

        public void Clear()
        {
            main.TxtBox.Clear();
          
        }
        public Edit()
        {
            
        }

    }

【问题讨论】:

  • MainWindow 作为参数传递,而不是在Edit 类中创建新实例。

标签: c# wpf oop


【解决方案1】:

我不清楚为什么你需要从另一个类中清除 MainWindow 的文本框,因为这在现实世界中是不切实际的,但是你去吧:

public class Edit
{
    public void Clear(MainWindow window)
    {
        window.TxtBox.Clear();
    }
}

另一种方法是将MainWindow 传递给Edit 类的构造函数,因为我可以看到您正在从MainWindow 类实例化Edit

public class Edit
{
    private MainWindow _window;

    public Edit(MainWindow window)
    {
        _window = window;
    }

    public void Clear()
    {
        _window.TxtBox.Clear();
    }
}

【讨论】:

  • 谢谢,但是应该在 Edit 中给出什么参数 edit = new Edit(); ?这是在我的一次学校考试中被问到的,是的,我知道:)
  • Edit edit = new Edit(this)
  • @Ogun 如果您使用我的第一个建议,那么它是Edit edit = new Edit()。如果您使用第二个建议,那么它是Edit edit = new Edit(this)。无论哪种方式都应该有效。
【解决方案2】:

如果您希望从不同的类访问 MainWindow 的控件,您可以使用类似的代码:

MainWindow MWin = (MainWindow)Application.Current.MainWindow;
MWin.TxtBox.Clear();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-20
    • 2021-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多