0
我正在研究一個Grasshopper組件,它是一個Rhino 3D插件,它可以執行圖形編程。我有一個代碼片段從WinForms的,就像這樣:Winform的確定按鈕永遠不會被調用
public void ShowForm()
{
hmf.ShowDialog();
if (hmf.ShowDialog() == DialogResult.OK) {
MessageBox.Show("DialogResultOK was hit.");
// store winforms values into global vars
try
{
MessageBox.Show(Params.Input[0].ToString());
Grasshopper.Kernel.Parameters.Param_String param = (Grasshopper.Kernel.Parameters.Param_String)Params.Input[0];
param.PersistentData.Clear();
for (int i = 0; i <= x.Count - 1; i++)
{
param.PersistentData.Append(new GH_String(x[i]));
}
param.ExpireSolution(true);
}
catch (Exception ex)
{
// error message
}
}
else if (hmf.ShowDialog() == DialogResult.Cancel)
{
MessageBox.Show("DialogResultCancel was hit.");
this.ExpireSolution(false);
}
}
它提供了兩個條件,一個DialogResult.OK
和DialogResult.Cancel
。從理論上講,當調用OK
時,它會將winforms值保存到我的全局變量中,否則將會變爲DialogResult.Cancel
。
由於某種原因,當我使用MessageBox.Show("...")
時,它顯示OK
從不被調用。
這裏是forms
代碼:
private void button1_Click(object sender, EventArgs e) // ok
{
}
public Button button1Object{ get { return this.button1; } }
private void button2_Click(object sender, EventArgs e) // cancel
{
}
public Button button2Object { get { return this.button2; } }
這是我form
的樣子。
哇。我還注意到,編譯完成後,需要三次關閉對話框。你說得對,因爲它被稱爲三次。讓我解決這個問題並回復你。 – theGreenCabbage
嘿codenoire。它似乎解決了我之前的問題,但是,單擊確定仍然不保存我的結果。例如,單擊確定不會執行任何操作。點擊紅色的關閉按鈕會提示我點擊'DialogResultCancel被擊中',但如果我再次打開對話框,結果將被保存oO – theGreenCabbage
好了,現在已經修復了,檢查hmf表單上的按鈕的屬性並確保它返回DialogResult.OK(另一張海報放了這個,但似乎已經刪除了它) –