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

VBとVC#でのListViewの違い

環境/言語:[C#]
分類:[.NET]

VB.NETで開発していたプログラムをVC#.NETに書き換えています。
VBでListView1.Columns.Item(2).Width = 100と書いていたコードをVC#に書き換えると「Itemの定義がありません」のエラーが発生します。
VC#ではどのように書けば良いのでしょうか?
■No6685に返信(ことぶきさんの記事)
> VB.NETで開発していたプログラムをVC#.NETに書き換えています。
> VBでListView1.Columns.Item(2).Width = 100と書いていたコードをVC#に書き換えると「Itemの定義がありません」のエラーが発生します。
> VC#ではどのように書けば良いのでしょうか?
ことぶきさん、こんちは
listView1.Columns[2].Width = 100;
でいいかと思います。
■No6688に返信(ゆさんの記事)
> ■No6685に返信(ことぶきさんの記事)
>>VB.NETで開発していたプログラムをVC#.NETに書き換えています。
>>VBでListView1.Columns.Item(2).Width = 100と書いていたコードをVC#に書き換えると「Itemの定義がありません」のエラーが発生します。
>>VC#ではどのように書けば良いのでしょうか?
> ことぶきさん、こんちは
> listView1.Columns[2].Width = 100;
> でいいかと思います。
>
おかげさまで正常に動作しました。
1点分からないのですがVBでは
ListView1.Columns.Item(2).Width = 100 と
ListView1.Columns(2).Width = 100 は
同じ結果になりますがC#では
listView1.Columns[2].Width = 100; と書かないとエラーになります。
この辺がすっきりすると良いのですが。
解決済み!
■No6693に返信(ことぶきさんの記事)

> listView1.Columns[2].Width = 100; と書かないとエラーになります。
いまいち言ってる意味が分からないですけど。
言語の仕様が違うから。
って答えじゃだめですか?
■No6697に返信(たぬぽんさんの記事)
> ■No6693に返信(ことぶきさんの記事)
>
>>listView1.Columns[2].Width = 100; と書かないとエラーになります。
> いまいち言ってる意味が分からないですけど。
> 言語の仕様が違うから。
> って答えじゃだめですか?
>
たぬぽんさん、有難うございます。
確かに違う言語ですから仕様が違うのは当たり前だと思いますが今までVBで
書いて居たのをC#に変えた途端にVBの記述が甘かった事に驚いています。
VBとC#にこんなに違いが有ると思っていませんでした。
これからはC#を使用していきますが、今後ともよろしくお願い致します。
> 1点分からないのですがVBでは
> ListView1.Columns.Item(2).Width = 100 と
> ListView1.Columns(2).Width = 100 は
> 同じ結果になりますがC#では
> listView1.Columns[2].Width = 100; と書かないとエラーになります。
> この辺がすっきりすると良いのですが。

VBではItemプロパティはデフォルトプロパティなので、
省略することもできるし、省略しない正確な記述が可能です。
しかし、C#ではインデクサとして扱われ、
省略しない書き方ができないように強制されます。

デフォルトプロパティとインデクサ、どちらがよいということではなく、
単に思想の違いでしょう。
■No6701に返信(よねKENさんの記事)
>>1点分からないのですがVBでは
>>ListView1.Columns.Item(2).Width = 100 と
>>ListView1.Columns(2).Width = 100 は
>>同じ結果になりますがC#では
>>listView1.Columns[2].Width = 100; と書かないとエラーになります。
>>この辺がすっきりすると良いのですが。
>
> VBではItemプロパティはデフォルトプロパティなので、
> 省略することもできるし、省略しない正確な記述が可能です。
> しかし、C#ではインデクサとして扱われ、
> 省略しない書き方ができないように強制されます。
>
> デフォルトプロパティとインデクサ、どちらがよいということではなく、
> 単に思想の違いでしょう。
>
よねKENさん、有難うございます。
VBだけやってきた自分にはlistView1.Columns[2].Widthの記述は
配列だと思い込んでいました。C#の入門書ではインデクサの説明が
されていないものがほとんどでしたが、色々読みあさりまして
おぼろげながら理解する事が出来ました。今後もよろしくお願い致します。
解決済み!

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