【问题标题】:Setting Text From Class other than Main从主类以外的类设置文本
【发布时间】:2014-12-05 10:17:53
【问题描述】:

我正在尝试更改 WPF 表单上文本框中的文本。到目前为止:

这是我更新文本框的方法。它在 MainWindow.cs 中

public void BodyText(string message)
    {

        txtBody.Clear();
        txtBody = new TextBox();
        txtBody.Text = message;  
    }

我正在尝试通过

从不同的类更新文本框
MainWindow.BodyText(e.bodyresult);

e.bodyresult 是一个字符串

我读过很多不同的东西,但似乎都没有像我预期的那样工作。我对 C# 相当陌生,所以任何帮助将不胜感激

【问题讨论】:

  • 通常,您只需将TextBox.Text 属性绑定到具有所需文本的数据结构。但如果你想以编程方式进行,第一步是不要创建一个全新的TextBox 对象。只需设置Text 属性(即删除BodyText() 方法中的前两个语句)。
  • @PeterDuniho 我现在已经改变了,但它不会让我调用该方法,因为它不是静态类?但是,我不能使用静态类,因为我需要将文本框作为参数传递
  • 可能能够将委托传递给另一个类,该类将用于调用您的 BodyText 方法...我有一段时间没有编写 C#,但我过去经常使用委托来更新进程与它们一起运行时的 UI
  • @JordanMoffat:在你的问题中用这么少的代码很难提供建议。但是规则很简单:如果你想调用一个非静态成员,你必须有一个实例引用。如果你有一个MainWindow 的实例,那么会有一些 代码知道它。该代码需要告诉调用BodyText() 的代码。或者,数据绑定或让MainWindow 类本身订阅获取e.bodyresult 值的类上的事件将起作用(实际上通常是首选)。
  • 可能是重复的问题:stackoverflow.com/questions/13644114/…

标签: c# wpf textbox


【解决方案1】:

MainWindow 是类的名称。在您的其他类中,您需要有权访问充当主窗口的该类型的实例。

类似这样的:

        MainWindow  x = (MainWindow) App.Current.MainWindow;
        x.BodyText("Message");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多