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

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

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

Re[6]: DataGridViewのセルに3桁区切りの数値にするには


(過去ログ 176 を表示中)

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

■101392 / inTopicNo.1)  DataGridViewのセルに3桁区切りの数値にするには
  
□投稿者/ TAKE (8回)-(2023/02/16(Thu) 15:13:21)

分類:[VB.NET/VB2005 以降] 

何時も参考にさせていただきありがとうございます。

VisualStadio2015 VB OS Windows10を使用しています。

あるネットで例えば2番目のセルに半角数値を入力した場合dataGridView1.Coloms(1).DefaultCellStyle.Format = "#,0"にすると"1234567"が"1,234,567”となるように書いていましたが
ならずに"1234567"で表示されます。

dataGridView1の特定のセルに半角数値を入力するとリアルに"1,234,567”と表示されるにはどうしたらよいでしょうか?
引用返信 編集キー/
■101393 / inTopicNo.2)  Re[1]: DataGridViewのセルに3桁区切りの数値にするには
□投稿者/ 魔界の仮面弁士 (3566回)-(2023/02/16(Thu) 15:39:03)
No101392 (TAKE さん) に返信
> あるネットで例えば
その情報源は、具体的にはどこでしょうか?

前後の情報に読み落としがあったとか、情報が古いといった可能性もあるので、
引用元を正しく提示して頂けると助かります。


> dataGridView1.Coloms(1).DefaultCellStyle.Format = "#,0"

.Columns(1) ではなく
.Coloms(1) なのですか?

それに、コントロール名の初期値が
 DataGridView1
ではなく
 dataGridView1
になっているのも、Visual Basic にしては珍しいですよね。


> にすると"1234567"が"1,234,567”となるように書いていましたが
> ならずに"1234567"で表示されます。

1234567 と "1234567" は別物です。

Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        dataGridView1.ColumnCount = 5
        dataGridView1.RowCount = 30
        dataGridView1.Columns(1).DefaultCellStyle.Format = "#,0"
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        dataGridView1(1, 2).Value = 1234567
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        dataGridView1(1, 2).Value = "1234567"
    End Sub
End Class


画面から値を直接入力する場合に対応するには、

(1) データバインドにより、該当列のデータを数値型に割り当てておく
(2) CellParsing イベントで、.Value プロパティに対して型変換を実施し、ParsingApplied プロパティを True にする

などの方法が使えます。列単位の指定なら (1)、セル単位で型を決めたいなら (2) が良いでしょう。

引用返信 編集キー/
■101394 / inTopicNo.3)  Re[2]: DataGridViewのセルに3桁区切りの数値にするには
□投稿者/ TAKE (9回)-(2023/02/16(Thu) 16:37:30)
No101393 (魔界の仮面弁士 さん) に返信
> ■No101392 (TAKE さん) に返信
>>あるネットで例えば
> その情報源は、具体的にはどこでしょうか?
>
> 前後の情報に読み落としがあったとか、情報が古いといった可能性もあるので、
> 引用元を正しく提示して頂けると助かります。
>
>
>>dataGridView1.Coloms(1).DefaultCellStyle.Format = "#,0"
>
> .Columns(1) ではなく
> .Coloms(1) なのですか?
>
> それに、コントロール名の初期値が
>  DataGridView1
> ではなく
>  dataGridView1
> になっているのも、Visual Basic にしては珍しいですよね。
>
>
>>にすると"1234567"が"1,234,567”となるように書いていましたが
>>ならずに"1234567"で表示されます。
>
> 1234567 と "1234567" は別物です。
>
> Public Class Form1
> Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
> dataGridView1.ColumnCount = 5
> dataGridView1.RowCount = 30
> dataGridView1.Columns(1).DefaultCellStyle.Format = "#,0"
> End Sub
>
> Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
> dataGridView1(1, 2).Value = 1234567
> End Sub
>
> Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
> dataGridView1(1, 2).Value = "1234567"
> End Sub
> End Class
>
>
> 画面から値を直接入力する場合に対応するには、
>
> (1) データバインドにより、該当列のデータを数値型に割り当てておく
> (2) CellParsing イベントで、.Value プロパティに対して型変換を実施し、ParsingApplied プロパティを True にする
>
> などの方法が使えます。列単位の指定なら (1)、セル単位で型を決めたいなら (2) が良いでしょう。

早速のご回答ありがとうございます。
情報元はhttps://atmarkit.itmedia.co.jp/fdotnet/dotnettips/1008datagridvwnum/datagridvwnum.htmlです。

> .Columns(1) ではなく
> .Coloms(1) なのですか?

すいませんまちがえました。ソースコードには.Columns(1)と記述しています。

> (2) CellParsing イベントで、.Value プロパティに対して型変換を実施し、ParsingApplied プロパティを True にする
>
> などの方法が使えます。列単位の指定なら (1)、セル単位で型を決めたいなら (2) が良いでしょう。

セル単位で考えています。ただ今回のdataGridViewはデータバインドは行わずただのGridとして考えています。
そこでCellParsing イベントはあったのですが
>.Value プロパティに対して型変換を実施し、ParsingApplied プロパティを True にする
が今一イメージがわかりません。大変申し訳ないですが簡単なサンプルをご提示してくださると幸いです。
何分勉強不足で申し訳ございませんが何卒よろしくおねがいします。
引用返信 編集キー/
■101395 / inTopicNo.4)  Re[3]: DataGridViewのセルに3桁区切りの数値にするには
□投稿者/ 魔界の仮面弁士 (3567回)-(2023/02/16(Thu) 17:07:29)
No101394 (TAKE さん) に返信
> セル単位で考えています。

すべてのセルが数値型の値を持つのでしょうか。

それとも、日付型のセルやドロップダウン選択なセルなど、いろいろな型があるのでしょうか。

同じ列でも、行によって値の型が違うとなると、
列ヘッダーをクリックしてもソートはできそうにないですね。

> そこでCellParsing イベントはあったのですが
> >.Value プロパティに対して型変換を実施し、ParsingApplied プロパティを True にする
> が今一イメージがわかりません。

単純に書けば、たとえば
 e.Value = CInt(e.Value) '型変換
 e.ParsingApplied = True 'イベント内で変換処理したので True にする
という感じです。

CInt などの代わりに、Decimal.TryParse や Integer.TryParse や Date.TryParse などを使うこともできます。
e.Value の中身が "" や Nothing や DBNull だった場合の対処も必要かも。


どのセルが処理されているのかは、e.ColumnIndex と e.RowIndex で判断してください。
データバインドしている場合は、列名や e.DesiredType を判断材料にすることもありますが、
バインドしていない場合、e.DesiredType は GetType(Object) になっていると思います。
https://dobon.net/vb/dotnet/datagridview/cellparsing.html

なお、セルに不正な値を入力できないようにしたい場合は、CellValidating イベントを使えます。
https://dobon.net/vb/dotnet/datagridview/cellvalidating.html
引用返信 編集キー/
■101396 / inTopicNo.5)  Re[4]: DataGridViewのセルに3桁区切りの数値にするには
□投稿者/ TAKE (10回)-(2023/02/16(Thu) 18:48:22)
No101395 (魔界の仮面弁士 さん) に返信
> ■No101394 (TAKE さん) に返信
>>セル単位で考えています。
>
> すべてのセルが数値型の値を持つのでしょうか。
>
> それとも、日付型のセルやドロップダウン選択なセルなど、いろいろな型があるのでしょうか。
>
> 同じ列でも、行によって値の型が違うとなると、
> 列ヘッダーをクリックしてもソートはできそうにないですね。
>
>>そこでCellParsing イベントはあったのですが
>>>.Value プロパティに対して型変換を実施し、ParsingApplied プロパティを True にする
>>が今一イメージがわかりません。
>
> 単純に書けば、たとえば
>  e.Value = CInt(e.Value) '型変換
>  e.ParsingApplied = True 'イベント内で変換処理したので True にする
> という感じです。
>
> CInt などの代わりに、Decimal.TryParse や Integer.TryParse や Date.TryParse などを使うこともできます。
> e.Value の中身が "" や Nothing や DBNull だった場合の対処も必要かも。
>
>
> どのセルが処理されているのかは、e.ColumnIndex と e.RowIndex で判断してください。
> データバインドしている場合は、列名や e.DesiredType を判断材料にすることもありますが、
> バインドしていない場合、e.DesiredType は GetType(Object) になっていると思います。
> https://dobon.net/vb/dotnet/datagridview/cellparsing.html
>
> なお、セルに不正な値を入力できないようにしたい場合は、CellValidating イベントを使えます。
> https://dobon.net/vb/dotnet/datagridview/cellvalidating.html

ご丁寧にありがとうございます。 
>すべてのセルが数値型の値を持つのでしょうか。
>
> それとも、日付型のセルやドロップダウン選択なセルなど、いろいろな型があるのでしょうか。
> すべてのセルが数値型の値を持つのでしょうか。
 ラベル的な使い方(システムを知らない上司からの指示)で文字列はありますが、入力するところは数値です。

明日の午前中にでもやってみます。いろいろありがとうございます。感謝です。
引用返信 編集キー/
■101404 / inTopicNo.6)  Re[5]: DataGridViewのセルに3桁区切りの数値にするには
□投稿者/ TAKE (11回)-(2023/02/17(Fri) 13:58:01)
No101396 (TAKE さん) に返信
> ■No101395 (魔界の仮面弁士 さん) に返信
>>■No101394 (TAKE さん) に返信
> >>セル単位で考えています。
>>
>>すべてのセルが数値型の値を持つのでしょうか。
>>
>>それとも、日付型のセルやドロップダウン選択なセルなど、いろいろな型があるのでしょうか。
>>
>>同じ列でも、行によって値の型が違うとなると、
>>列ヘッダーをクリックしてもソートはできそうにないですね。
>>
> >>そこでCellParsing イベントはあったのですが
> >>>.Value プロパティに対して型変換を実施し、ParsingApplied プロパティを True にする
> >>が今一イメージがわかりません。
>>
>>単純に書けば、たとえば
>> e.Value = CInt(e.Value) '型変換
>> e.ParsingApplied = True 'イベント内で変換処理したので True にする
>>という感じです。
>>
>>CInt などの代わりに、Decimal.TryParse や Integer.TryParse や Date.TryParse などを使うこともできます。
>>e.Value の中身が "" や Nothing や DBNull だった場合の対処も必要かも。
>>
>>
>>どのセルが処理されているのかは、e.ColumnIndex と e.RowIndex で判断してください。
>>データバインドしている場合は、列名や e.DesiredType を判断材料にすることもありますが、
>>バインドしていない場合、e.DesiredType は GetType(Object) になっていると思います。
>>https://dobon.net/vb/dotnet/datagridview/cellparsing.html
>>
>>なお、セルに不正な値を入力できないようにしたい場合は、CellValidating イベントを使えます。
>>https://dobon.net/vb/dotnet/datagridview/cellvalidating.html
>
> ご丁寧にありがとうございます。 
> >すべてのセルが数値型の値を持つのでしょうか。
>>
>>それとも、日付型のセルやドロップダウン選択なセルなど、いろいろな型があるのでしょうか。
>>すべてのセルが数値型の値を持つのでしょうか。
>  ラベル的な使い方(システムを知らない上司からの指示)で文字列はありますが、入力するところは数値です。
>
> 明日の午前中にでもやってみます。いろいろありがとうございます。感謝です。
解決済み
引用返信 編集キー/
■101405 / inTopicNo.7)  Re[6]: DataGridViewのセルに3桁区切りの数値にするには
□投稿者/ 魔界の仮面弁士 (3568回)-(2023/02/17(Fri) 14:20:51)
No101404 (TAKE さん) に返信

引用は適切に。無用な全文引用は避けましょう。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -