質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

1回答

5723閲覧

VB.NET 「アプリケーション フレームワークを有効にする」をオフにするとListViewのListViewGroupが正しく動作しない

matsutake

総合スコア34

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2020/04/30 11:14

お世話になります。
前回、「VB.NET 画像(サムネイル)を日付ごとに分けて一覧で表示したい」という質問をさせて頂きました。
その際にListViewを使用するご提案を頂き、試しておるところでした。
おかげさまで実際に以下のように表示もされるようになりました。

①実現したい表示の仕方(「アプリケーション フレームワークを有効にする」がオン状態)
2020年4月19日
□□□□□□□□□□
□□□

2020年4月18日
□□

2020年4月15日
□□□□□□□□□□
□□□□□□□□□

しかし、上記の内容で作成を進めていましたが
FormにListViewを貼り付け、クラスライブラリとして別のプログラムから参照するようにしてみたところ、
上記の①の表示が以下の②のように
日付の部分が表示されず、ただただ画像が並ぶだけの表示になってしまったのです。

②現状(「アプリケーション フレームワークを有効にする」がオフ状態)
□□□□□□□□□□
□□□□□□□□□□
□□□□□□□□□□
□□□□

色々と調べておりましたら、①のように表示される場合は、
ビルド時にソリューションのプロパティのアプリケーションタブ内の
アプリケーションの種類を「Windowsフォームアプリケーション」を選択し、
「アプリケーション フレームワークを有効にする」をオンにすれば上記のような表示となるのですが、
アプリケーションの種類を「クラスライブラリ」でビルドをすると
「アプリケーション フレームワークを有効にする」がオフ状態となり、
②のような表示となってしまいます。

クラスライブラリとしてビルドする場合、
何かよい回避策はありますでしょうか。

VB.NET

1Private Sub DispListView() 2 Dim intDayCnt As Integer 3 Dim intPicCnt As Integer 4 5 intDayCnt = 3 6 intPicCnt = 12 7 8 ImageList1.ImageSize = New Size(60, 60) 9 10 '画像の代入 11 ImageList1.Images.Add(Image.FromFile("C:\Picture\2020042117052920170302024400Penguins.jpg")) 12 ImageList1.Images.Add(Image.FromFile("C:\Picture\20150711133910IMG_0267.jpg")) 13 ImageList1.Images.Add(Image.FromFile("C:\Picture\2020042117052920170302024400Penguins.jpg")) 14 ImageList1.Images.Add(Image.FromFile("C:\Picture\20150711133910IMG_0267.jpg")) 15 ImageList1.Images.Add(Image.FromFile("C:\Picture\2020042117052920170302024400Penguins.jpg")) 16 ImageList1.Images.Add(Image.FromFile("C:\Picture\20150711133910IMG_0267.jpg")) 17 ImageList1.Images.Add(Image.FromFile("C:\Picture\2020042117052920170302024400Penguins.jpg")) 18 ImageList1.Images.Add(Image.FromFile("C:\Picture\20150711133910IMG_0267.jpg")) 19 ImageList1.Images.Add(Image.FromFile("C:\Picture\2020042117052920170302024400Penguins.jpg")) 20 ImageList1.Images.Add(Image.FromFile("C:\Picture\20150711133910IMG_0267.jpg")) 21 ImageList1.Images.Add(Image.FromFile("C:\Picture\2020042117052920170302024400Penguins.jpg")) 22 ImageList1.Images.Add(Image.FromFile("C:\Picture\20150711133910IMG_0267.jpg")) 23 ImageList1.Images.Add(Image.FromFile("C:\Picture\2020042117052920170302024400Penguins.jpg")) 24 25 With Me.ListView1 26 .View = View.Tile 27 .TileSize = New Size(70, 70) 28 .LargeImageList = ImageList1 29 Dim dt As DateTime = DateTime.Now.Date 30 For i As Integer = 0 To intDayCnt - 1 '日付行の数 31 Dim gdate As DateTime = dt.AddDays(i) 32 Dim lvg As New ListViewGroup 33 lvg.Header = gdate.ToString("yyyy年MM月dd日") 34 .Groups.Add(lvg) 35 36 For j As Integer = 0 To intPicCnt '画像の枚数 37 Dim lvi As New ListViewItem 38 lvi.Group = lvg 39 lvi.ImageIndex = j 40 41 .Items.Add(lvi) 42 Next 43 44 Next 45 End With 46 47 End Sub

宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YAmaGNZ

2020/04/30 11:43

そのライブラリを使用するアプリ側はフレームワークを有効にしていないのですか?
matsutake

2020/04/30 20:30

お世話になります。 ご回答、ありがとうございました。 呼び出し側の「アプリケーション フレームワークを有効にする」をオンにしましたら 望んでいるような表示は出来ました。 しかし、呼び出し側の画面のボタンの表示が最初はクラシックスタイルなのですが、 今作成中の画面を呼び出した時点からXPスタイル?(丸みのかかったボタン)になってしまうのです。 関係あるのかわかりませんが、呼び出し側も呼ばれる側のプロパティ内の 「XP Visualスタイルを有効にする」はオフにしてあります。 何かご存知でしょうか。
guest

回答1

0

ベストアンサー

ListViewGroup が有効になるかどうかは、Visual Style の設定によります。

「ListViewGroup クラス」
https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.forms.listviewgroup

Application.EnableVisualStyles() を呼ぶことで有効になるのですが、このメソッドは最初のフォームを作る前、
(正確にはウインドウハンドルが作成される前)に呼び出さないと有効になりません。

ですので使う側で呼び出すのが一般的です。

Sub Main から起動している場合は以下のようにします。

VB

1Sub Main() 2 Application.EnableVisualStyles() 3 Application.SetCompatibleTextRenderingDefault(False) 4 Application.Run(New Form1()) 5End Sub

Shared コンストラクタに入れとくといいかもしれませんが、本当に気休めです。

VB

1Shared Sub New() 2 Application.EnableVisualStyles() 3End Sub

投稿2020/04/30 19:52

KOZ6.0

総合スコア2707

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

matsutake

2020/04/30 20:31

お世話になります。 ご回答、ありがとうございました。 入れてみたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問