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

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

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

Re[1]: listviewで表示領域と内部領域を分けれますか?


(過去ログ 67 を表示中)

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

■39030 / inTopicNo.1)  listviewで表示領域と内部領域を分けれますか?
  
□投稿者/ ubi (1回)-(2009/07/29(Wed) 16:08:52)

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

listviewをフォームに貼り付けた時の表示領域以上の
アイテムが登録された場合、縦もしくは横のスクロールバーが表示されますが
このスクロール表示をアイテムが10個追加されたと仮定した領域分だけ〜
といった具合に設定できますか?

引用返信 編集キー/
■39033 / inTopicNo.2)  Re[1]: listviewで表示領域と内部領域を分けれますか?
□投稿者/ やじゅ (1147回)-(2009/07/29(Wed) 16:37:19)
やじゅ さんの Web サイト
No39030 (ubi さん) に返信
> listviewをフォームに貼り付けた時の表示領域以上の
> アイテムが登録された場合、縦もしくは横のスクロールバーが表示されますが

> このスクロール表示をアイテムが10個追加されたと仮定した領域分だけ〜
> といった具合に設定できますか?

もう少し詳しく、私はこの程度の文章でも読み取れない見たい(^^;

引用返信 編集キー/
■39037 / inTopicNo.3)  Re[2]: listviewで表示領域と内部領域を分けれますか?
□投稿者/ ubi (2回)-(2009/07/29(Wed) 16:48:34)
わかりにくい表現ですいません。

listviewのサイズプロパティを「100,100」に設定しました。
Items(0).SubItems.Addでアイテムを10個追加しました。

そうすると最初に設定したサイズでは表示しきれないので
10個分のアイテムを表示できるようにスクロールバーが表示されます。

この10個分表示できるように調整されたスクロールバーを
アイテムを追加する事無く、最初から表示させたいのですが
可能でしょうか?

No39033 (やじゅ さん) に返信
> ■No39030 (ubi さん) に返信
>>listviewをフォームに貼り付けた時の表示領域以上の
>>アイテムが登録された場合、縦もしくは横のスクロールバーが表示されますが
>
>>このスクロール表示をアイテムが10個追加されたと仮定した領域分だけ〜
>>といった具合に設定できますか?
>
> もう少し詳しく、私はこの程度の文章でも読み取れない見たい(^^;
>
引用返信 編集キー/
■39042 / inTopicNo.4)  Re[3]: listviewで表示領域と内部領域を分けれますか?
□投稿者/ やじゅ (1150回)-(2009/07/29(Wed) 17:30:32)
やじゅ さんの Web サイト
No39037 (ubi さん) に返信
> この10個分表示できるように調整されたスクロールバーを
> アイテムを追加する事無く、最初から表示させたいのですが
> 可能でしょうか?
> 

最初から常にスクロールバーを表示しておきたい。ってことですかね。

ShowScrollBarを使うことになるんじゃないかと。

未検証です。ShowScrollBarあたりで検索してみてください。
参考にしたのは、http://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=al2&namber=23858&no=0&KLOG=2

    Imports System.Runtime.InteropServices

    Private Enum SB As Integer
        SB_HORZ
        SB_VERT
        SB_CTL
        SB_BOTH
    End Enum

    Private Declare Function ShowScrollBar Lib "user32" ( _
        ByVal hwnd As IntPtr, _
        ByVal wBar As SB, _
        <MarshalAs(UnmanagedType.Bool)> ByVal bShow As Boolean _
    ) As <MarshalAs(UnmanagedType.Bool)> Boolean

    'どこかのタイミングで垂直バーを表示
     ShowScrollBar(Me.ListView1.Handle, SB.SB_VERT, True)

引用返信 編集キー/
■39093 / inTopicNo.5)  Re[4]: listviewで表示領域と内部領域を分けれますか?
□投稿者/ ubi (3回)-(2009/07/30(Thu) 09:46:34)
回答ありがとうございます。

スクロールバーの表示は教えてもらった処理を実装して実現できましたが、
このとき表示だけでなく、10個分のアイコンがあると仮定した領域分スクロールできる状態に
したいと思っています。(実際にアイコンはlistview内にない状態です)

実装にUser32.dllを使っているので、APIドキュメントを見てみたのですが
該当するものが見つかりませんでした。

そもそもアイコンが表示しきれない数に達しないと、スクロールを
上下する事は不可能でしょうか?

No39042 (やじゅ さん) に返信
> ■No39037 (ubi さん) に返信
>>この10個分表示できるように調整されたスクロールバーを
>>アイテムを追加する事無く、最初から表示させたいのですが
>>可能でしょうか?
>>
>
> 最初から常にスクロールバーを表示しておきたい。ってことですかね。
>
> ShowScrollBarを使うことになるんじゃないかと。
>
> 未検証です。ShowScrollBarあたりで検索してみてください。
> 参考にしたのは、http://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=al2&namber=23858&no=0&KLOG=2
>
> Imports System.Runtime.InteropServices
>
> Private Enum SB As Integer
> SB_HORZ
> SB_VERT
> SB_CTL
> SB_BOTH
> End Enum
>
> Private Declare Function ShowScrollBar Lib "user32" ( _
> ByVal hwnd As IntPtr, _
> ByVal wBar As SB, _
> <MarshalAs(UnmanagedType.Bool)> ByVal bShow As Boolean _
> ) As <MarshalAs(UnmanagedType.Bool)> Boolean
>
> 'どこかのタイミングで垂直バーを表示
> ShowScrollBar(Me.ListView1.Handle, SB.SB_VERT, True)
>
引用返信 編集キー/
■39094 / inTopicNo.6)  Re[5]: listviewで表示領域と内部領域を分けれますか?
□投稿者/ .SHO (984回)-(2009/07/30(Thu) 09:53:43)
> 実装にUser32.dllを使っているので、APIドキュメントを見てみたのですが
> 該当するものが見つかりませんでした。
>
> そもそもアイコンが表示しきれない数に達しないと、スクロールを
> 上下する事は不可能でしょうか?

API使っていいなら不可能じゃないです。
自分でスクロールバーを実装すれば出来ます。

VBわからないし、かなり昔にやったので、それ以上は書けないけど
とにかく不可能ではないです。

引用返信 編集キー/
■39096 / inTopicNo.7)  Re[5]: listviewで表示領域と内部領域を分けれますか?
□投稿者/ みきぬ (569回)-(2009/07/30(Thu) 09:58:07)
何でそんなことをしたいのかさっぱりわかりませんが、
ListView を使うかわりに、 FlowLayoutPanel と (個々のアイコン表示として)UserControl を使い、
FlowLayoutPanel.AutoScrollMinSize プロパティをてきとーに設定すれば、それなりに要件は満たしそうな気がします。
引用返信 編集キー/
■39103 / inTopicNo.8)  Re[6]: listviewで表示領域と内部領域を分けれますか?
□投稿者/ よねKEN (394回)-(2009/07/30(Thu) 11:24:49)
No39096 (みきぬ さん) に返信
> 何でそんなことをしたいのかさっぱりわかりませんが、

単なる予想ですが、
表示対象データが大量にあって(例えば10000件)、それをListViewにはなから登録しておくと
描画などが重くなる(かどうかしらないけど)ため、実際の登録データはユーザに見える範囲のデータで、
でも、スクロールバー的には10000件が登録されているような見た目と操作が欲しい、
のではないでしょうか。
引用返信 編集キー/
■39109 / inTopicNo.9)  Re[5]: listviewで表示領域と内部領域を分けれますか?
□投稿者/ やじゅ (1156回)-(2009/07/30(Thu) 13:00:42)
やじゅ さんの Web サイト
2009/07/30(Thu) 13:01:11 編集(投稿者)

No39093 (ubi さん) に返信
> 回答ありがとうございます。
>
> スクロールバーの表示は教えてもらった処理を実装して実現できましたが、
> このとき表示だけでなく、10個分のアイコンがあると仮定した領域分スクロールできる状態に
> したいと思っています。(実際にアイコンはlistview内にない状態です)
>

ごめんなさい、スクロールバーの範囲は別のAPIみたいですね。


あと、思いついたのは、10個分のアイコンを追加済み(仮登録)としておいて(スクロールが表示されるので)
オーナードローで、仮登録にしてある部分は表示上消してしまう。
引用返信 編集キー/
■39110 / inTopicNo.10)  Re[1]: listviewで表示領域と内部領域を分けれますか?
□投稿者/ gtk2k (47回)-(2009/07/30(Thu) 13:06:00)
No39030 (ubi さん) に返信
> listviewをフォームに貼り付けた時の表示領域以上の
> アイテムが登録された場合、縦もしくは横のスクロールバーが表示されますが
> このスクロール表示をアイテムが10個追加されたと仮定した領域分だけ〜
> といった具合に設定できますか?
>

期待する動作がよねKENさんのおっしゃるものであるとするならば
仮想モードがいいんじゃね?
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -