• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Gridに日付を入れるとき)

Gridに日付を表示する方法

このQ&Aのポイント
  • Gridに日付を正しく表示させる方法についてアドバイスをお願いします。
  • 現在のソースでは、日付の表示が間違っています。正しい表示方法を教えてください。
  • 「2006/05/10 13:00:00」と表示させるためには、どのように修正すればよいでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

>他に方法ってないですか? おそらく無いかと思います。 極力シンプルにしたいのであれば、関数化してあげると、メイン部のコードが多少ダイエットできると思います。 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load   Dim dt As New DataTable("aaa")   Dim dc1 As New DataColumn("日付1", Type.GetType("System.DateTime"))   Dim dc2 As New DataColumn("日付2", Type.GetType("System.DateTime"))   dt.Columns.AddRange(New DataColumn() {dc1, dc2})   dt.Rows.Add(New Object() {"2006/05/10 14:00:00", "2006/05/11 14:00:00"})   DataGrid1.DataSource = dt   Dim ts As New DataGridTableStyle()   ts.MappingName = dt.TableName   ts.GridColumnStyles.Add(取得_TextBoxColumn(dc1))   ts.GridColumnStyles.Add(取得_TextBoxColumn(dc2, 120))   DataGrid1.TableStyles.Add(ts) End Sub 'サイズ自動バージョン Private Function 取得_TextBoxColumn(ByVal p_dc As DataColumn) As DataGridTextBoxColumn   Return 取得_TextBoxColumn(p_dc, -1) End Function 'サイズ設定バージョン Private Function 取得_TextBoxColumn(ByVal p_dc As DataColumn, ByVal p_width As Integer) As DataGridTextBoxColumn   Dim l_ret As New DataGridTextBoxColumn()   With l_ret     .MappingName = p_dc.ColumnName     .HeaderText = p_dc.ColumnName     .Format = "yyyy/MM/dd hh:mm:ss"     .Width = p_width   End With   Return l_ret End Function もっとシンプルにさせようとすると、別クラスを起こし、データグリッドを継承したオリジナルのコントロールを作成する方法が思いつきます。 あくまでも私の場合ですが、、、 ・まだ他にグリッドに機能を持たせる恐れがあるのであれば、継承クラスを作成する ・この画面のみで利用する機能であれば、継承クラスを作成するまでもなし という判断を行います。 どの様な創りがベストかは、全体設計から判断をされたらよいと思います。

fuchir
質問者

お礼

分かりました。 >全体設計から判断をされたらよいと思います。 そうですね。全体設計からベストな方法を考えて見ます ご回答ありがとうございます。

すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.1

DataGridTextBoxColumn クラスを利用します http://okwave.jp/kotaeru.php3?q=2062060 http://dobon.net/vb/dotnet/datagrid/columnformat.html http://dobon.net/vb/dotnet/datagrid/columnwidth.html Dim dt As New DataTable("aaa") Dim dc As New DataColumn("日付", Type.GetType("System.DateTime")) dt.Columns.Add(dc) dt.Rows.Add(New Object() {"2006/05/10 14:00:00"}) DataGrid1.DataSource = dt Dim cs As New DataGridTextBoxColumn() cs.MappingName = dc.ColumnName cs.HeaderText = dc.ColumnName cs.Width = 120 cs.Format = "yyyy/MM/dd hh:mm:ss" Dim ts As New DataGridTableStyle() ts.MappingName = dt.TableName ts.GridColumnStyles.Add(cs) DataGrid1.TableStyles.Add(ts)

fuchir
質問者

補足

できました。ありがとうございました。 この場合、もう一つ同じような列を増やしたいときは ------------------------------------------------- Dim dt As New DataTable("aaa") Dim dc1 As New DataColumn("日付1", Type.GetType("System.DateTime")) dt.Columns.Add(dc1) Dim dc2 As New DataColumn("日付2", Type.GetType("System.DateTime")) dt.Columns.Add(dc2) dt.Rows.Add(New Object() {"2006/05/10 14:00:00","2006/05/11 14:00:00"}) DataGrid1.DataSource = dt Dim ts As New DataGridTableStyle() ts.MappingName = dt.TableName '「日付1」の設定 Dim cs As New DataGridTextBoxColumn() cs.MappingName = dc1.ColumnName cs.HeaderText = dc1.ColumnName cs.Width = 120 cs.Format = "yyyy/MM/dd hh:mm:ss" ts.GridColumnStyles.Add(cs) DataGrid1.TableStyles.Add(ts) '「日付2」の設定 cs = New DataGridTextBoxColumn() cs.MappingName = dc2.ColumnName cs.HeaderText = dc2.ColumnName cs.Width = 120 cs.Format = "yyyy/MM/dd hh:mm:ss" ts.GridColumnStyles.Add(cs) DataGrid1.TableStyles.Add(ts) ------------------------------------------------ のようにすれば、列の追加が出来たのですが、他に方法ってないですか? ソースが汚くてすみません。

すると、全ての回答が全文表示されます。

専門家に質問してみよう