コントロールが必要なアプリケーションを開発していますListBox
。残念ながら、に追加するアイテムが多すぎるListBox
と、垂直スクロールバーが表示されます。で示されている垂直スクロールバーを非表示にするためにできることはありListBox
ますか?水平スクロールバーを非表示にするプロパティがありますが、垂直スクロールバーのプロパティはありません。
質問する
14132 次
2 に答える
9
問題は解決しました。次のコードを使用して、テンプレートクラスライブラリの新しいプロジェクトを作成しました。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace ClassLibrary1
{
public class MyListBox : System.Windows.Forms.ListBox
{
private bool mShowScroll;
protected override System.Windows.Forms.CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
if (!mShowScroll)
cp.Style = cp.Style & ~0x200000;
return cp;
}
}
public bool ShowScrollbar
{
get { return mShowScroll; }
set
{
if (value != mShowScroll)
{
mShowScroll = value;
if (IsHandleCreated)
RecreateHandle();
}
}
}
}
}
次に、新しいクラスライブラリを出力するプロジェクトをビルドしましたClassLibrary1.dll
メインプロジェクトで、を右クリックしてToolBox
を選択しましChoose Items...
た。[参照... ]をクリックし、最近作成したクラスライブラリ(ClassLibrary1.dll)を選択して、[開く] 、 [ OK ]の順にクリックします。ListBox
このようにして、垂直スクロールバーがなくなったカスタムを作成することができました。
于 2012-11-01T02:17:06.023 に答える
1
水平スクロールバーを除いて、通常の使用では垂直スクロールバーをオフにする方法はありません。
プロパティを使用してのみ、常に表示または自動に設定できますScrollAlwaysVisible
(VBでも)。
アイテムを追加するときは、代わりに次のように計算してClientSizeを再計算できます(テストされていない場合は、パディング値も追加する必要がある場合があります)。
Size sz = new Size(ListBox1.ClientSize.Width, _
ListBox1.Items.Count * ListBox1.Font.Height);
ListBox1.ClientSize = sz
もちろん、値がゼロの場合、および/または最小/最大の高さが必要な場合は、値にチェックを追加する必要があります。
于 2012-11-01T02:06:37.257 に答える