C# 面板固定位置

C# 面板固定位置,c#,winforms,scroll,panel,C#,Winforms,Scroll,Panel,我在表单中有一个面板,我希望它位于表单顶部的固定位置。因此,如果向下滚动,面板将始终可见 您知道如何执行此操作吗?有两个面板,将其中一个停靠填充到窗体,但请确保浮动面板是窗体控件集合的一部分,而不是停靠填充面板集合的一部分。有时候设计师很难做到 示例应用程序: public partial class Form1 : Form { Panel backPanel; Panel floatPanel; public Form1() { InitializeComponent(

我在表单中有一个面板,我希望它位于表单顶部的固定位置。因此,如果向下滚动,面板将始终可见


您知道如何执行此操作吗?

有两个面板,将其中一个停靠填充到窗体,但请确保浮动面板是窗体控件集合的一部分,而不是停靠填充面板集合的一部分。有时候设计师很难做到

示例应用程序:

public partial class Form1 : Form {
  Panel backPanel;
  Panel floatPanel;

  public Form1() {
    InitializeComponent();

    floatPanel = new Panel();
    floatPanel.BorderStyle = BorderStyle.FixedSingle;
    floatPanel.SetBounds(0, 0, 128, 64);
    this.Controls.Add(floatPanel);

    backPanel = new Panel();
    backPanel.Dock = DockStyle.Fill;
    backPanel.AutoScrollMinSize = new Size(0, 1000);
    this.Controls.Add(backPanel);
  }
}
public partial class Form1 : Form {
  Panel backPanel;
  Panel topPanel;

  public Form1() {
    InitializeComponent();

    backPanel = new Panel();
    backPanel.Dock = DockStyle.Fill;
    backPanel.AutoScrollMinSize = new Size(0, 1000);
    this.Controls.Add(backPanel);

    topPanel = new Panel();
    topPanel.Height = 64;
    topPanel.Dock = DockStyle.Top;
    this.Controls.Add(topPanel);
  }
}
这适用于现有面板顶部的浮动面板。没有什么gui意义,因为如果控件滚动到浮动面板下面会发生什么

如果您希望顶部面板正好位于滚动部分的上方,请按相反顺序添加两个面板,将“顶部”面板停靠到顶部,以便顶部面板不会放置在滚动面板的“后面”

示例应用程序:

public partial class Form1 : Form {
  Panel backPanel;
  Panel floatPanel;

  public Form1() {
    InitializeComponent();

    floatPanel = new Panel();
    floatPanel.BorderStyle = BorderStyle.FixedSingle;
    floatPanel.SetBounds(0, 0, 128, 64);
    this.Controls.Add(floatPanel);

    backPanel = new Panel();
    backPanel.Dock = DockStyle.Fill;
    backPanel.AutoScrollMinSize = new Size(0, 1000);
    this.Controls.Add(backPanel);
  }
}
public partial class Form1 : Form {
  Panel backPanel;
  Panel topPanel;

  public Form1() {
    InitializeComponent();

    backPanel = new Panel();
    backPanel.Dock = DockStyle.Fill;
    backPanel.AutoScrollMinSize = new Size(0, 1000);
    this.Controls.Add(backPanel);

    topPanel = new Panel();
    topPanel.Height = 64;
    topPanel.Dock = DockStyle.Top;
    this.Controls.Add(topPanel);
  }
}

ASP.NET、Winforms还是WPF?所有的面板都有,我们能挑一个吗?要想对你的问题有一个好的答案,你需要详细说明这个问题。您正在使用ASP.NET/WPF/Winforms/Silverlight吗?你的代码现在看起来怎么样?可能是重复的,但据我所知不是完全重复的。但是我不能重做一次接近投票。如果我有一个好的候选人怎么办?我怎样才能把它固定在上面?Dock属性不工作。@user1051434为什么不工作?我用BindingNavigator控件替换了“topPanel”控件,它工作得很好。它位于窗体的顶部,滚动面板就在它的正下方。这是基于第二个示例,因为听起来您并不是在面板上“浮动”控件。@user1051434事情的顺序很重要,设计师可以在这里阻碍事情的进行。我的示例之所以有效,是因为我在添加滚动面板之后添加了面板(或导航栏)。以另一种方式操作会使控件“落后于”另一个控件。另一种方法是在设计器中使用
BringToFront()
SendToBack()
方法,或者打开“视图”-“其他窗口”-“文档大纲”窗口来更改控件的z顺序。我有一个bindingNavigator进入面板。当我滚动时,无法使bindingNavigator固定在面板顶部。。有吗?@user1051434没有,如果他们在同一个面板中就没有了。您正在滚动的内容将隐藏在导航栏的顶部。这就是为什么我的示例代码首先放入滚动面板,然后放入顶部面板。当然,您可以将两个面板都放在父面板或usercontrol中,但规则应该是,只有滚动的项目才属于该滚动容器。如果它不滚动,则它不属于该容器的“内部”。