- PR -

DataGridViewの年月日項目に今日の日付が自動設定される?

1
投稿者投稿内容
だんじり
大ベテラン
会議室デビュー日: 2007/08/10
投稿数: 155
お住まい・勤務地: 神奈川県
投稿日時: 2007-09-24 16:54
WindowsXP VB2005EEを使って、Windowsアプリケーションを開発中です。

DataGridViewを配置したフォームを Load してから2〜3分ぐらいするとDataGridView
にあります年月日項目の新規追加行に今日の日付が自動的に設定されてしまいます。
不思議に思い、次のようなテストを行いまっした。その状況を連記します。

1.フォームを Load し、何も操作しない場合でも2〜3分で今日(9/24)の日付が
自動設定されます。

2.新規行の年月日項目に別の日付を設定しておいても2〜3分で今日(9/24)の
日付が自動設定されます。

3.Timer コントロールなどは使用していません。

4.年月日入力用のMonthCalendarを使用していて、下の様なDateChangedイベントを
設定しています。(勿論、操作していません。)
Dim Ro As Int32 = dataGridView.CurrentCell.RowIndex
dataGridView(0, Ro).Value = Me.MonthCalendar1.SelectionRange.Start

5.さらに、一旦新規行の年月日を MonthCalendar で9月1日に設定し、その後手入力
で9月15日と設定変更しから2〜3分経過すると、やはりMonthCalendarに設定されて
いた9月1日に自動修正されます。

上記した今日の日付とは、おそらくMonthCalendarに設定されている日付のようです。
このことから、 MonthCalendar は日付入力としては使えません。何か私の使用方法が
間違えているのでしょうか。ご存知の方はヒントでも結構ですのでご指導下さい。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-09-24 17:00
たぶんコレですね。間違いなくコレですね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
だんじり
大ベテラン
会議室デビュー日: 2007/08/10
投稿数: 155
お住まい・勤務地: 神奈川県
投稿日時: 2007-09-24 17:20
じゃんぬねっとさん、いつもありがとうございます。

そういえば、以前、別の件でMonthCalendar の恐ろしい話をじゃんぬねっとさんの
日誌で読ましていただきましたが、そのときは「不可解な動き」程度に捕らえて
おりましたが、このことでしたか。

でも、現在開発中のソフトはDataGridViewをフォームに配置して各種入力(数字や
リストボックス、カレンダー)を画面右側の一箇所に集め、全てマウスで入力でき
ますようにしたもので、何とかこのお化けのような2分後の自動書き込みを止める
方法がないのでしょうか。
誰かご存知の方、よろしくお願いいたします。

【追記】
後からこのスレッドを見る人のために、もう少しテスト結果と調査した内容を追加
して報告します。

1.約2分間隔でMonthCalendarコントロールに設定した日付で自動的に繰返し書換え
が実行られる。(このことはCalenderの本日(赤丸)を更新するために2分ごとに
マシン日付をチェックするために発生しているイベントに同期しているようだ)
これはMonthCalendarコントロールのバグのようだ。

2.ユーザが明示的に操作した時にだけイベントを発生させたいなら、DateChanged
ではなく、DateSelected イベントを使えばよい。(私も確認しました。)

以上、その後私なりにMonthCalendarコントロールを調べた内容を掲載しました。
参考にして下さい。




[ メッセージ編集済み 編集者: だんじり 編集日時 2007-09-24 23:51 ]

[ メッセージ編集済み 編集者: だんじり 編集日時 2007-09-24 23:55 ]
KI
大ベテラン
会議室デビュー日: 2007/01/10
投稿数: 239
投稿日時: 2007-09-25 15:43
直接の回答ではないかも知れませんが、
MonthCalendar の代わりに DateTimePicker を使うというのはダメでしょうか?

念のため書いておきますと、DateTimePicker はデフォルトでは時刻まで表示しますが、
DateTimePicker の Format プロパティを Custom に設定して、
CustomFormat プロパティに日付のみの書式(yyyy/MM/dd とか)を設定することで、
日付のみにすることが可能です。
1

スキルアップ/キャリアアップ(JOB@IT)