C# 在窗口应用程序的文本框中显示值

C# 在窗口应用程序的文本框中显示值,c#,winforms,C#,Winforms,我是一个新的窗口应用程序。我有两张表格,表格一和表格二。From1有一个文本框,form2有一个组合框。现在我想在关闭form2时将combox选中的form2项显示到form1的文本框中。因此,我定义了一个静态类(marketclass),并将选中的值赋给statik变量。下面是我的form2代码 private void cboMarkets_SelectedIndexChanged(Object sender, System.EventArgs e) {

我是一个新的窗口应用程序。我有两张表格,表格一和表格二。From1有一个文本框,form2有一个组合框。现在我想在关闭form2时将combox选中的form2项显示到form1的文本框中。因此,我定义了一个静态类(marketclass),并将选中的值赋给statik变量。下面是我的form2代码

    private void cboMarkets_SelectedIndexChanged(Object sender, System.EventArgs e)
    {
         marketclass.nAlgoproperty = Convert.ToInt32(cmbMarket.SelectedValue);
         this.Close();
    }
下面的id是我的form1代码

   public Form1()
    {
        InitializeComponent();          

        if (marketclass.nAlgoproperty > 0)
        {
            textbox1.text = marketclass.nAlgoproperty;
       }
}
但它不起作用。那么我怎样才能做到这一点呢


谢谢。

是否设置了ComboBox的ValueMember属性?如果不是,那么,您应该或者如果您使用组合框显示的文本作为值,则必须使用SelectedText属性:

private void cboMarkets_SelectedIndexChanged(Object sender, System.EventArgs e)
{
     marketclass.nAlgoproperty = Convert.ToInt32(cmbMarket.SelectedText);
     this.Close();
}

是否设置了ComboBox的ValueMember属性?如果不是,那么,您应该或者如果您使用组合框显示的文本作为值,则必须使用SelectedText属性:

private void cboMarkets_SelectedIndexChanged(Object sender, System.EventArgs e)
{
     marketclass.nAlgoproperty = Convert.ToInt32(cmbMarket.SelectedText);
     this.Close();
}

一般来说

使用模型-视图-控制器(MVC)模式可以很好地解决这类问题

这看起来像WinForms,它并不完全支持MVC。然而,尽管如此,您仍然可以实现MVC模式

对于一篇好的入门文章,我建议你看看

针对这个问题

您正试图使用静态变量实现类似的结果。问题很可能是更改支持静态变量的值以及查找更改的时间

textbox1.text = marketclass.nAlgoproperty;
在加载Form1时调用。可能是Form1确实是在Form2的复选框处理程序更新
marketclass
中的值之前加载的

即使今天的情况并非如此,这也说明了您将在当前使用的模式中遇到的问题类型


MVC模式通过将一个或多个控件绑定到支持变量来解决这种类型的计时问题,这样,如果某个UI元素更改了该值,该值将被更新,所有其他绑定的UI元素也将被更新。相反,如果值发生更改(例如,因为它是从数据库加载的),则所有绑定的UI元素都会自动更新。

一般来说

使用模型-视图-控制器(MVC)模式可以很好地解决这类问题

这看起来像WinForms,它并不完全支持MVC。然而,尽管如此,您仍然可以实现MVC模式

对于一篇好的入门文章,我建议你看看

针对这个问题

您正试图使用静态变量实现类似的结果。问题很可能是更改支持静态变量的值以及查找更改的时间

textbox1.text = marketclass.nAlgoproperty;
在加载Form1时调用。可能是Form1确实是在Form2的复选框处理程序更新
marketclass
中的值之前加载的

即使今天的情况并非如此,这也说明了您将在当前使用的模式中遇到的问题类型


MVC模式通过将一个或多个控件绑定到支持变量来解决这种类型的计时问题,这样,如果某个UI元素更改了该值,该值将被更新,所有其他绑定的UI元素也将被更新。相反,如果值发生更改(例如,因为它是从数据库加载的),则所有绑定的UI元素都会自动更新。

您正在执行
textbox1.Text=marketclass.nAlgoproperty
Form1
的构造函数中的赋值(即
Form2
之前将值赋值给
marketclass.nAlgoproperty

撇开“最佳”方式不谈,您只需在显示
Form2
Form1
调用后执行赋值(即一旦
Form2
关闭)


应该这样做。一旦你工作了,考虑一个更好的方法——例如设计模式。< /P> < p>你正在执行赋值<代码>文本BOX= TeX= MultCype。NalGooGy <代码> > <代码> Frime的构造函数(即在<代码> Frave)分配一个值给“代码> MealStase.ngalOrWorks<代码> >

撇开“最佳”方式不谈,您只需在显示
Form2
Form1
调用后执行赋值(即一旦
Form2
关闭)

应该这样做。一旦得到了这一点,就考虑一个更好的方法——例如设计模式。

通过SuffdiAudio()来显示Frave2,然后检索值:

// ... in Form1 ...
Form2 f2 = new Form2();
f2.ShowDialog(); // code stops here until "f2" is closed
textbox1.text = marketclass.nAlgoproperty;
通过ShowDialog()显示Form2,然后检索值:

// ... in Form1 ...
Form2 f2 = new Form2();
f2.ShowDialog(); // code stops here until "f2" is closed
textbox1.text = marketclass.nAlgoproperty;

我找到了短代码,并把值显示出来



int widht = Screen.PrimaryScreen.Bounds.Width;//l
int height = Screen.PrimaryScreen.Bounds.Height;//h

textbox1.text ="Widht -> " +widht + " : Height ->" +height


欢迎你

我找到了短代码,并将display的值放入其中



int widht = Screen.PrimaryScreen.Bounds.Width;//l
int height = Screen.PrimaryScreen.Bounds.Height;//h

textbox1.text ="Widht -> " +widht + " : Height ->" +height


欢迎你

到底是什么不起作用?请尽量具体。当我选择Combox value并关闭form2时,form2的Combox Selected value没有显示在form1的文本框中。在
form1
中,您在哪里调用
form2
,您应该在启动
form2
后进行分配,然后将值设置为
marketclass
实例或类?记住,静态应该通过类名而不是实例来访问;到底是什么不起作用?请尽量具体。当我选择Combox value并关闭form2时,form2的Combox Selected value没有显示在form1的文本框中。在
form1
中,您在哪里调用
form2
,您应该在启动
form2
后进行分配,然后将值设置为
marketclass
实例或类?记住,静态应该通过类名而不是实例来访问;是的,我知道,但当我打开form2时,选择组合框值并关闭form2,然后我想在文本框中显示该值。如何在显示Form2的Form1调用后执行赋值如何在显示Form2的Form1调用后执行赋值。我不知道那条路。你能给我举个例子吗?是的,我知道