C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: 時間の書式設定に関して


(過去ログ 14 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■4745 / inTopicNo.1)  時間の書式設定に関して
  
□投稿者/ もねを (12回)-(2007/06/24(Sun) 14:13:43)

分類:[VB.NET (Windows)] 

時間の書式設定で悩んでいます。アドバイスよろしくお願いします。
データグリッドビューを使ってタイムカードの入力のプログラムを作成しています。
Cellには時間を入力します(HH:mm 00:00〜23:59の間で入力します)
Maskを使用したかったのですができないみたいなので、Cellから離れるタイミングで、
900と入力すれば、表示は9:00と表示したいです。
1015と入力すれば、表示は10:15と表示したいです。

以下の内容を試してみました

Private Sub dgv勤怠情報_CellValidated(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgv勤怠情報.CellValidated

Debug.Print(dgv勤怠情報.Rows(e.RowIndex).Cells(e.ColumnIndex).Value.ToString("t"))
'結果:String"t"からIntegerへの変換は無効ですとエラーが出ます。

Debug.Print(dgv勤怠情報.Rows(e.RowIndex).Cells(e.ColumnIndex).Value.ToString("HH:mm"))
'結果:String"HH:mm"からIntegerへの変換は無効ですとエラーが出ます。

Debug.Print(String.Format(dgv勤怠情報.Rows(e.RowIndex).Cells(e.ColumnIndex).Value, "HH:mm"))
'結果: 0900となって変化なしです。

Debug.Print(String.Format(dgv勤怠情報.Rows(e.RowIndex).Cells(e.ColumnIndex).Value, "00:00"))
'結果: 0900となって変化なしです。

Debug.Print(Format(dgv勤怠情報.Rows(e.RowIndex).Cells(e.ColumnIndex).Value, "HH:mm"))
'結果: HH:mmが表示されてしまいました。

End Sub

アドバイスよろしくお願いします。

引用返信 編集キー/
■4746 / inTopicNo.2)  Re[1]: 時間の書式設定に関して
□投稿者/ もねを (13回)-(2007/06/24(Sun) 14:16:44)
すみません。環境はVB2005Expressです。わすれておりました。
アドバイスよろしくお願いします。
引用返信 編集キー/
■4748 / inTopicNo.3)  Re[2]: 時間の書式設定に関して
□投稿者/ ダッチ (141回)-(2007/06/24(Sun) 14:34:56)
書式の「t」や「HH:mm」は DateTime 型に対するものです。
Integer などの数値型に対しては意味がありません。
数値型に対しての書式は以下のページに記載されています。

カスタム数値書式指定文字列
http://msdn2.microsoft.com/ja-jp/library/0c899ak8(VS.80).aspx

例えば、900.ToString("#0:00") とすれば「9:00」と返ってきます。
もちろん書式を設定する前に、時刻として正しいかの検証は必要になります。

またセルの表示だけを変更したいのであれば、

DataGridView.CellFormatting イベント
http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.datagridview.cellformatting(VS.80).aspx

を使ったほうがいいかもしれません。
引用返信 編集キー/
■4750 / inTopicNo.4)  Re[3]: 時間の書式設定に関して
□投稿者/ もねを (14回)-(2007/06/24(Sun) 15:58:42)
ダッチさんありがとうございます。
INT型に変換することで00:00に形式で表示されました。
DataGridView.CellFormattingですが、こちらもあわせて研究してみたのですがなかなかうまくいきません。
これができればすごくうれしい感じなのですが・・・
デザインからFormatを指定してみましたが、何も変化はなかったです。
DataGridView.CellFormattingも試してみたのですが変化がなかったです。書き方でしょうか?
e.format="00:00" と書いてみました。

あと、DataGridView.CellFormattingをしようするとイベントが大量に発生しました。マウスがセル上を通過しただけで発生するみたいです。
とりあえず、INT型に直して00:00で表示するようにしてみます。
ありがとうございました。
PS:落ち着いたらDataGridView.CellFormattingこちらもっと研究してみます。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -