0

我是 Window 应用程序的新手。我有两个表格form1和form2。From1 有一个文本框,form2 有一个组合框。现在,当我关闭 form2 时,我想将 form2 的组合框选定项显示到 form1 的文本框中。所以我已经定义了一个静态类(marketclass)并将选定的值分配给 statik 变量。Beow 是我的 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;
       }
}

但不工作。那么我怎样才能做到这一点。

谢谢。

4

5 回答 5

3

通过 ShowDialog() 显示 Form2,然后检索值:

// ... in Form1 ...
Form2 f2 = new Form2();
f2.ShowDialog(); // code stops here until "f2" is closed
textbox1.text = marketclass.nAlgoproperty;
于 2013-05-02T04:47:57.347 回答
1

一般来说

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

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

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

http://www.codeproject.com/Articles/383153/The-Model-View-Controller-MVC-Pattern-with-Csharp

具体到这个问题

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

textbox1.text = marketclass.nAlgoproperty;

在加载 Form1 时调用。可能是在 Form2 的复选框处理程序更新marketclass.

即使今天不是这种情况,这也说明了您现在使用的模式将遇到的问题类型。

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

于 2013-05-02T04:40:12.787 回答
0

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

private void cboMarkets_SelectedIndexChanged(Object sender, System.EventArgs e)
{
     marketclass.nAlgoproperty = Convert.ToInt32(cmbMarket.SelectedText);
     this.Close();
}
于 2013-05-02T04:40:00.313 回答
0

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

撇开“最好”的方式来做到这一点,您可以在Form1该节目的调用之后执行分配Form2(即一旦Form2关闭)。

form2.Show();
textbox1.Text = marketclass.nAlgoproperty;

那应该这样做。一旦你得到它的工作,考虑一个更好的方法来做 - 例如MVC 和观察者设计模式。

于 2013-05-02T04:40:45.503 回答
0

我找到了短代码,并把显示的值!



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

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

没关系!!

于 2020-03-31T10:51:34.490 回答