0

この前のスレッドのコードを追加しようとしましたが、うまくいきませんでした。

パネルの水平スクロールバーを無効にする方法

画面に表示する必要があるかどうかに関係なく表示されるため、単に削除したいだけです。

4

2 に答える 2

1

Panel.AutoScroll = falseおよび で静的に設定されていない限り、パネルはバーを表示しませんpanel1.HorizontalScroll.Visible = true。ステータスを強制するのではなく、コントロールがパネルを超えて拡張されていないことを確認することをお勧めします。

以下をフォームの一部に挿入します。これにより、パネルの側面を超えて拡張されたコントロールがないことが確認されます。panel1 を、問題のあるパネルの名前に変更します。

        foreach (Control comp in panel1.Controls)
        {
            if (comp.Right >= panel1.Width || comp.Bottom >= panel1.Height)
            {
                System.Diagnostics.Debugger.Break();
            }
        }

それでも問題が見つからない場合は、その作業を行う必要がありますPanel.AutoScroll = falsepanel1.HorizontalScroll.Visible = false

于 2012-08-20T21:08:44.730 に答える
0

このソリューションが好ましいことがわかりました。

public class MongoDataPanel : Panel
{

    [DllImport("user32.dll")]
    static public extern bool ShowScrollBar(IntPtr hWnd, int wBar, bool bShow);
    private const int SB_HORZ = 0;
    private const int SB_VERT = 1;


    protected override void OnResize(EventArgs eventargs)
    {
        base.OnResize(eventargs);
        if (this.Parent != null)
        {
            if (this.Parent.Width > this.PreferredSize.Width - 10)
            {
                try
                {
                    ShowScrollBar(this.Handle, SB_HORZ, false);
                }
                catch (Exception e) { }
            }
        }
    }
}
于 2014-07-25T01:42:53.910 に答える