この前のスレッドのコードを追加しようとしましたが、うまくいきませんでした。
画面に表示する必要があるかどうかに関係なく表示されるため、単に削除したいだけです。
この前のスレッドのコードを追加しようとしましたが、うまくいきませんでした。
画面に表示する必要があるかどうかに関係なく表示されるため、単に削除したいだけです。
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 = false
。panel1.HorizontalScroll.Visible = false
このソリューションが好ましいことがわかりました。
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) { }
}
}
}
}