2011-10-22 27 views
0

使用VB.Net(Windows應用程序)值沒有出現在當前活動窗體

我有一個主要的形式(數據輸入表單),我創建在運行時的許多形式。

在運行時創建多個表單的代碼。

Button1的單擊

If IsNothing(frm) OrElse frm.IsDisposed Then 
      newfrm = New frmEntry 
    End If 
newfrm.Show() 

我有彈出窗口的selcting在數據輸入表單的值。

代碼selcting從彈出窗口

彈出窗口代碼

If e.KeyCode = Keys.Enter Then 
frmEntry.txtbox1.Text = gridview1.Rows(crRow).Cells("code").Value.ToString().Trim()   
End If 

上方的彈出式窗口代碼正在爲數據輸入表單的價值,但它不工作的新形式(在運行時)

當我從彈出窗口中選擇值意味着它出現在frmentry文本框中,而不是在newfrm文本框中。

彈出窗口選定值應顯示在當前活動窗體中。

我的代碼有什麼問題。

需要VB.Net代碼幫助

回答

1

如果從打開彈出式的形式是你所需要的改變價值觀,你認爲是傳遞一個參考開放的形式彈出,當你打開它?所以你可以直接訪問需要更新的控件的表單?

此構造在彈出的窗口:

Private mOpeningForm As frmEntry 
Public Sub New(OpeningForm As frmEntry) 

    InitializeComponent() 

    mOpeningForm = OpeningForm 
End Sub 

此修改爲使用參考發送到彈出的形式的形式:

If e.KeyCode = Keys.Enter Then 
mOpeningForm.txtbox1.Text = gridview1.Rows(crRow).Cells("code").Value.ToString().Trim()   
End If 

這在窗體被創建的窗口時運行時間:

If IsNothing(mEntryForm) OrElse mEntryForm.IsDisposed Then 
      mEntryForm= New frmEntry(me) 
    End If 
mEntryForm.Show() 

在數據表單類(創建彈出窗口的頂層)

private mEntryForm as frmEntry 

這將允許您從數據表單類中的任何位置引用frmEntry的實例。 (請注意,我更改了彈出式窗體實例的名稱以獲取按鈕單擊事件代碼)

+0

這往往會導致NullReferenceException異常。 OP使用frmEntry的原因。 –

+0

我想我認爲他創建的表單實例仍然在範圍之內。當然,如果不是它會生成空引用......我以爲他OP忽略了他使用類型名稱而不是表單名稱。 – Jay

+0

原來,代碼是另一種形式,他留下了對我的答案的評論。 –