0

正直に言って、私はc#ではなくvbコードで書いています。

私は提案されたフォーラムの主題をチェックしましたが、どれも当てはまりません(私が見つけたものです)ので、ここにあります。私はvb.netに比較的慣れていません。(vb6から来る)

control_1テキストボックスとボタンを含むユーザーを作成しています。Control_1別のユーザーから継承しますcontrol_2(いくつかのテキストボックスとカレンダーフォームボタン)。ボタンを押すと、を含むカレンダーフォームが起動しますCalendarControl

これまでのところ正常に動作します。

CalendarControl次に、カレンダーフォームの値を着席していないユーザーに返す必要がありますcontrol_1。ここでデザインタイムについて話しているのですが、ユーザーControl_1はまだフォームに座っていません。

このプロセスをカプセル化する必要があるため、シートフォームからカレンダーフォームをトリガーしたくありません。

ロジックとアプリが機能することを確認するために、フォームベースのアプリとしてコードを記述しました。今、私はコードと構成要素のコントロールをコントロールライブラリに移動しようとしています。

カレンダーフォームから呼び出してみましUsercontrol_1たが、共有コントロールやプロパティが表示されません。Me.Parent.ControlsForEachループで試しました。コントロールは見つかりましたが、Newキーワードを使用する必要があると言われました。新しいものを試しましたが、うまくいきませんでした。たぶん私は知性が何について話しているのか誤解しました。

あなたの時間と助けを事前に感謝します。

4

1 に答える 1

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含む上に、同様のプロパティを作成します。今回は、日付が選択されていない状況を示すために、null許容の日付を使用しています

Public Property SelectedDate As Date?

これで、次のようにカレンダーフォームを呼び出すことができます。

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

これで、プロパティを介してユーザーコントロールの外部から日付にアクセスできますSelectedDate

(コードはテストされていません)

于 2013-02-16T17:35:45.533 に答える