2013-02-16 61 views
0

就在前面,我寫的是vb代碼,而不是c#。在設計時從另一個表單引用UserControl的組成TextBox vb.net

我已經簽出了建議的論壇主題並且沒有任何應用(我可以找到),所以在這裏。我對vb.net比較陌生。 (來自vb6)

我創建一個包含文本框和一個按鈕的用戶control_1Control_1繼承自其他用戶control_2(幾個文本框和日曆表單按鈕)。當我按下按鈕時,它將啓動包含CalendarControl的日曆表單。

到目前爲止工作良好。

現在我需要將其日曆表格上的CalendarControl值返回給不帶電的用戶control_1。我在這裏正在討論設計時間,用戶Control_1沒有坐在窗體上。

我不想從它坐着的窗體中觸發日曆窗體,因爲我希望封裝這個過程。

我將代碼編寫爲基於表單的應用程序,以確保我的邏輯和應用程序能夠正常工作。現在我試圖將代碼和組成控件移動到控件庫中。

我試過從我的日曆窗體調用Usercontrol_1,但它沒有顯示任何我的共享控件或屬性。我在For Each循環中試過Me.Parent.Controls。它找到了控件,但說我需要使用New關鍵字。我嘗試了新的,它沒有奏效。也許我誤解了他們正在談論的內容。

在此先感謝您的時間和幫助。

+0

不客氣。此外,由於您是StackOverflow的新用戶,因此我想告訴您,您可以通過查看答案旁邊的勾號來獲得最佳答案並接受最能幫助您的答案。在這個網站上upvote或接受的答案算作「謝謝」。 – 2013-02-17 15:07:32

回答

0

在設計時您不能單擊打開另一個表單的按鈕。因此,我真的不確定你在設計時想要達到的目標。

我不知道您使用的壓光控制。因此,我將使用DateTimePicker來解釋可能的解決方案。在日曆上的形式(姑且稱之爲fdlgCalender補充說,允許公衆訪問壓延控制的選定日期的屬性:

Public Property SelectedDate() As Date 
    Get 
     Return DateTimePicker1.Value 
    End Get 
    Set(ByVal value As Date) 
     DateTimePicker1.Value = value 
    End Set 
End Property 

在您UserControl含壓延按鈕,創建一個類似的財產這次我們使用。

Dim fdlg As New fdlgCalender() 
If SelectedDate.HasValue Then 
    fdlg.SelectedDate = SelectedDate.Value 
Else 
    fdlg.SelectedDate = Today 
End If 

' Assuming that the dialog form sets the `DialogResult` correctly 
If fdlg.ShowDialog() = DialogResult.OK Then 
    SelectedDate = fdlg.SelectedDate 
Else 
    SelectedDate = Nothing 
End If 
:爲了指明日期還沒有選擇

Public Property SelectedDate As Date? 

的情況現在,可以調用壓延形式這樣可爲空的日期

現在您可以通過SelectedDate屬性訪問用戶控件外部的日期。

(該代碼未經測試)

相關問題