我正在研究一个关于winforms的项目,最近我意识到,如果我向下滚动然后会出现另一个按钮,它会显示在与我的意思不同的位置。我需要知道如何修复它,我的意思是如何使按钮出现在整个表单上的某个位置。
我有两个按钮,一个让另一个按钮出现 以下是代码示例:
public Form1()
{
InitializeComponent();
this.AutoScroll = true;
this.Controls.Remove(button2);
}
private void button1_Click(object sender, EventArgs e)
{
this.button2.Dock = DockStyle.None;
this.button2.Anchor = (AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right);
this.button2.Location = new System.Drawing.Point(110, 96);
this.Controls.Add(button2);
}
private void button2_Click(object sender, EventArgs e)
{
this.Controls.Remove(button2);
}
它不起作用。
答案 0 :(得分:0)
如Scheien建议的那样,设置按钮的位置,并将Anchor属性设置为所需的值(Left,Top,Right,Bottom)。这将固定按钮相对于所选表单边缘的位置。
如果您的意思是即使用户滚动并读取某些文本也不希望按钮移动,请将按钮放在面板中并将面板停靠在表单底部(或任何您想要的位置)。您还可以使用拆分器控件并将按钮放在一个部分中,将内容放在另一个部分中。
答案 1 :(得分:0)
将按钮上的Anchor
属性设置为Top, Left
。然后它始终与顶部和左侧的长度相同。这也是默认设置。
确保Dock
属性设置为None
:
button1.Dock = DockStyle.None;
button1.Location = new System.Drawing.Point(50, 50);
button1.Anchor = (AnchorStyles.Top | AnchorStyles.Left);
当您将按钮添加到表单时,它会从顶部开始50个像素,从左侧开始50个像素,根据持有它的控件。在这种情况下,形式为:
this.Controls.Add(button1);
你确定x和y变量没有弄乱这个位置吗?
答案 2 :(得分:0)
请让自己更清楚:你写道滚动表格,对吗?
正常行为是每个控件,包括所有按钮,都会随移动。
这是你的问题还是还有另一个'运动'在继续?
由于之前的回复没有帮助,因此可以解决固定按钮的(有点异国情调)情况:
首先创建表单变量以保存原始Top值:
int oldButton1Top;
然后在Load事件中设置它:
public Form1()
{
InitializeComponent();
//..
oldButton1Top = button1.Top;
//
}
然后对表单的Scroll事件进行编码,如下所示:
private void Form1_Scroll(object sender, ScrollEventArgs e)
{
button1.Top = oldButton1Top + e.NewValue - e.NewValue;
}
这应该让你的按钮固定在原来的位置。
BTW:在一个答案中,你被告知要在反对边缘将锚点设置为true。当窗口调整大小时,这将使按钮增长或缩小并且不是你想要的