2011-07-27 78 views
0

我有一個Windows窗體應用程序,我需要從用戶獲得輸入。我決定使用另一種形式。在我的主窗口中的代碼形成這樣的:獲取從另一個Windows窗體中輸入c#

inputPage p = new inputPage(); 
p.Visible = true; 
VBand = p.getValueDouble(); 

我的第二個表(在這裏我從用戶那裏得到輸入)很簡單。它只包含一個標籤,文本框和確定按鈕。 我的問題是,當我們確定用戶輸入值並按下確定按鈕後,我想調用getValueDouble函數(上面的第三行代碼)。那我該怎麼做? 謝謝..

回答

1

您可能想要使用窗體的ShowDialog()方法。這將導致您的當前功能等待,直到用戶單擊按鈕關閉表單。

inputPage p = new inputPage(); 

DialogResult result = p.ShowDialog(); 

if(result == DialogResult.OK) 
{ 
    VBand = p.getValueDouble(); 
} 

形式確定按鈕應該有DialogResult屬性設置爲DialogResult.OK

+0

如果我寫DialogResult.Cancel而不是好 – dnur

+0

@dnur似乎真的:在你的第二個形式,設置了「確定」按鈕是「確定」動作,並且「取消」按鈕爲「取消」動作。 – Tipx

1

假設你inputPage是一種形式:

inputPage p = new inputPage(); 
if(p.ShowDialog() == DialogResult.Ok) 
{ 
    VBand = p.getValueDouble(); 
} 
+0

它不會給出錯誤,但程序沒有意識到我按下了ok按鈕 – dnur

+1

在inputPage窗體上,將Save按鈕設置爲* AcceptButton *作爲窗體。 –

0

請看命名約定:類名應以大寫字母,以及方法名開始。

你應該做到以下幾點:

InputPage p = new InputPage(); 
if (p.ShowDialog(this) == DialogResult.OK) 
{ 
    vBand = p.GetValueDouble(); 
} 

當使用WPF,這看起來如下:

InputPage p = new InputPage(); 
p.Owner = this; 
if (p.ShowDialog() ?? false) 
{ 
    .... 
} 

在WPF中,ShowDialog方法返回一個bool?值可以是nullfalse (對話框被取消或以其他方式關閉而沒有用戶選擇)或true如果用戶按下確定。

if (... ?? ...)可以改寫爲:

bool? ret = p.ShowDialog(); 
if (ret.HasValue() && ret) 
{ 
} 
相關問題