2017-09-11 11 views
0

ListBox IDがmyListのコントロールがあります。これには50個のアイテムが追加されています。垂直スクロールバーは、コントロールの右側に必然的に表示されます。二つの関連質問:私は、スクロールバーが表示されないように にmyList.Heightを設定するためにどのような値、実行時に決定するにはどうすればよい垂直スクロールバーを削除するために必要なListBoxの高さを確認する

  1. 1つの行に必要な高さ(パディングあり)を決定するにはどうすればよいですか?

フォントは(国際化)に変更されるので、この場合、フォームがロード動的する必要がある場合myList.ClientSize.Heightの値が変化します。

注:「なぜスクロールバーを削除するのか」という疑問がある場合は、ListBoxを親コントロールに置き、上/下ボタンのクリックに応じてmyList.Topを変更することで、スクロールを個別に処理します。

答えて

0

これは再び、How to hide the vertical scroll bar in a .NET ListView Control in Details modeで別の解決策がある

[DllImport ("coredll")] 
private static extern long ShowScrollBar (long hwnd , long wBar, long bShow); 
long SB_HORZ = 0; 
long SB_VERT = 1; 
long SB_BOTH = 3; 

private void HideHorizontalScrollBar() 
{ 
    ShowScrollBar(listView1.Handle.ToInt64(), SB_HORZ, 0); 
} 
private void HideScrollBars() 
{ 
    ShowScrollBar(listView1.Handle.ToInt64(), SB_BOTH, 0); 
} 

に変更する必要があり、コンパクトなフレームワークでは、このC# ListView Disable Horizontal Scrollbar

をお試しください:コンパクトなフレームワーク/のWindows Mobile 6.xの

ためcoredllによってUSER32置き換えます
+0

残念ながら、 'coredll.dll'は' ShowScrollbar'メソッドをエクスポートしないので、これは動作しません。 'P/Invoke'をある程度使っているマネージアプリケーションでは、アプリケーションライフサイクルの早い段階で' Marshal.PrelinkAll(this.GetType()); 'を呼び出して、 'P/Invoke'メソッドがすべて利用可能であることを確認するのが賢明です。私のアプリケーションはすぐに 'ShowScrollbar'の例外をスローします。 – AlainD

+0

リンクされた質問にこのメソッドをまだ試していない... – AlainD

+0

この記事で提案されている素晴らしい回避策:https://www.pcreview.co.uk/threads/hiding-vertical-scrollbar-in-listbox.2890942 /は、スクロールバーが不要になるようにListBoxまたはListViewの項目数を制限するだけです。次に、ページ番号を変更し、ビューを更新して上下にスクロールします。 – AlainD

関連する問題