DOBON.NET DOBON.NETプログラミング掲示板過去ログ

date time pickerの日付について

環境/言語:[OS:XP 言語:vb.net]
分類:[.NET]

TOPフォームのMonthCalendarで選択した日付を
リンク先フォームのdate time pickerですでに表示してあるという状態にしたと思っています。

TOP
    Dim monthbay = MonthCalendar.SelectionStart()
Dim REGISTER As New register

REGISTER.monthbay = monthbay
REGISTER.Show()


リンク先
Private Sub register_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
monthbay = date time picker
End Sub

上記コードではエラーは出ませんが、date time pickerには今日の日付が表示され、TOPフォームで選択した日付が表示されません。

解決方法わかるかたおりましたらご指導よろしくお願いします。
■No21222に返信(まーさんの記事)

> monthbay = date time picker
> 上記コードではエラーは出ませんが、date time pickerには今日の日付が表示

エラーが出ると思いますが・・・ date time picker ??

TOPが windows Formであり、Form2をShowするのをリンク先と解釈しまして、
TOPでは、
Friend dat1 As Date
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
dat1 = MonthCalendar1.SelectionStart
Dim f2 As New Form2
f2.Show(Me)
End Sub

Form2では、
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Show()
' Me.DateTimePicker1.Value = Form1.dat1
Dim f1 As Form1 = Me.Owner
Me.DateTimePicker1.Value = f1.dat1
End Sub
で簡便には、出来ました。参考になれば・・・
■No21224に返信(y4yamaさんの記事)

y4yama様
返信遅れまして申し訳ございません。

記述していただいたコード、
とても参考にさせていただいております。

topフォームの
f2.Show(Me)のMeで波線が生じ、マウスポインタを合わせたところ「'Public Sub Show()'に対する引数が多すぎます。」
と表示されます。

どのようにすれば解決できるのでしょうか?
よろしくお願いします。

OS:Windows XP pro
言語:Visual Studio 2003
■No21254に返信(まーさんの記事)
> f2.Show(Me)のMeで波線が生じ、マウスポインタを合わせたところ「'Public Sub Show()'に対する引数が多すぎます。」
> OS:Windows XP pro
> 言語:Visual Studio 2003
多分2005だと想像してましたが・・・思い込みではダメでした

.net 2003でしたら、
Dim f2 As New Form2  'インスタンスを作成する
f2.Owner = Me 'OwnerがForm1であると教える
f2.Show()
でOKでした。

ところで、■21224 では、f2側では、f1を意識して
Dim f1 As Form1 = Me.Owner
Me.DateTimePicker1.Value = f1.dat1
としていますが、もっと簡便には、f2側には何もコードを書かずに
Form1で
dat1 = MonthCalendar1.SelectionStart
Dim f2 As New Form2
f2.DateTimePicker1.Value = dat1
f2.Show()
だけで、できます。

きちっと標準的なコーディングとしては
f2にDateTimePicker1.Value を設定するプロパティを作っておいて、Form1では、f2.そのプロパティ= dat1 とするべきなんです(多分)
■No21257に返信(y4yamaさんの記事)
y4yama様
返信ありがとうございます。

> 多分2005だと想像してましたが・・・思い込みではダメでした
はじめに開発言語を提示しなかったこちらのミスです。
すみませんでしたm(_ _)m

> Form1で
> dat1 = MonthCalendar1.SelectionStart
> Dim f2 As New Form2
> f2.DateTimePicker1.Value = dat1
> f2.Show()
> だけで、できます。
上記コードを参考にさせていただいております。

MonthCalendarの日付をDateTimePickerに表示させることはできたのですが、
選択した日が表示されたForm2と今日の日付が表示されている状態のForm2
の二つが表示されてしまいます。

また、以下のコードを使用して、
MonthCalendarでダブルクリック判定を行っています。
http://dotnet.mvps.org/dotnet/faqs/?id=monthcalendardoubleclick&lang=en
ダブルクリックされた日付をDateTimePickerに表示させたいと考えていますが、
Form2が2つ出てきてしまうのはダブルクリック判定が原因なのでしょうか?

以下現在のForm1のコードになります。
Friend dat1 As Date
Private Shadows Sub exMonthCalendar_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) _
Handles exMonthCalendar.DoubleClick

Dim monthbay = exMonthCalendar.SelectionStart()
Dim REGISTER As New register

REGISTER.Show()

dat1 = exMonthCalendar.SelectionStart
Dim f2 As New register
f2.rstart.Value = dat1
f2.Show()
End Sub

よろしくお願いします。
■No21260に返信(まーさんの記事)
> Dim REGISTER As New register
> REGISTER.Show()
>
> dat1 = exMonthCalendar.SelectionStart
> Dim f2 As New register
> f2.rstart.Value = dat1
> f2.Show()

New register を2つして.Showしてるから、ソフトは正直にその通りに
動いていますネ!
少しは、ソースで何をしているかを、よく考えましょうね
自分で考えるように・・よろしくお願いします。
■No21261に返信(y4yamaさんの記事)
> New register を2つして.Showしてるから、ソフトは正直にその通りに
> 動いていますネ!

あぁ!
ダブルクリックのREGISTER.Show()と日付のf2.Show()でregisterに
2回.showしてしまってますね…orz

解決しました。
丁寧なご指導ありがとうございました。
m(_ _)m
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板