为什么我无法获得txtBox2.Text和txtBox3.Text值?

时间:2019-12-15 14:58:55

标签: c#

DIGIT*

//我是新手,我已经测试了我的程序并显示出来。希望得到您的帮助,如何获取txtBox2.Text和txtBox3.Text值。谢谢。

1 个答案:

答案 0 :(得分:2)

您已经创建了UserControl1的实例,但是尚未对该实例执行任何操作。它不是任何形式的一部分,不会显示给用户,等等。您已经成功设置了值,但从未向用户显示这些值。因为该实例与其他任何实例都没有关系,例如您当前在屏幕上看到的那个实例。

退后一步。无论如何,您的Opcconnect类不应尝试直接设置UI控件。它应该仅返回UI所需的数据,并且表单代码应更新控件。例如:

public partial class Opcconnect : OPCServerClass
{
    public Tuple<string, string> DataRead()
    {
        return new Tuple<string, string>("SJZ", "TEST");
    }
}

(我在这里使用Tuple<T1,T2>是因为没有任何上下文,就无法知道哪种数据结构更合适。您可能想要为此使用自定义类。但是现在,至少返回两个字符串值。)

然后在表单代码中获得这些值并更新控件:

public partial class UserControl1 : UserControl,IRequireGraphicInterface
{  
    private void button1_Click(object sender, RoutedEventArgs e)
    {
        Opcconnect OC = new Opcconnect();
        var values = OC.DataRead();
        txtBox2.Text = values.Item1;
        txtBox3.Text = values.Item2;
        txtBox4.Text = "zjy";
    }
}

基本上,将您的UI代码保留在UI中。应用程序的不同层(UI,业务逻辑,数据库和基础结构依赖性)不应跨越层边界泄漏其实现,而应仅使用/返回正在传输的数据。