1 其中,from的AutoScroll属性设置为Ture
2 窗体的热键设置了Ctrl+N为添加RichTextBox,新添加的Top=0 ,Left =Name*300 ,RichTextBox Width=300
private void KanBan_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control && e.KeyCode == Keys.N )
{
RichTextBox txtBox = new RichTextBox();
//System.Drawing.Point p = new Point(0, UName * 300);//创建一个坐标,用来给新的按钮定位
//b.Location = p;//把按钮的位置与刚创建的坐标绑定在一起
txtBox.Name = "Rtxt" + (UName + 1).ToString();
if (UName == 0)
{
System.Drawing.Point p = new Point(0, 0);//创建一个坐标,用来给新的按钮定位
txtBox.Location = p;
txtBox.Height = this.Height - 80; //设置新添加的RichTextBxo的高度
txtBox.Width = 300; //设置新添加的RichTextBox的宽度
UName = UName + 1; //计数器加一
}
else
{
System.Drawing.Point p = new Point(UName * 300,0 );//创建一个坐标,用来给新的按钮定位
txtBox.Location = p;
txtBox.Height = this.Height - 80; //设置新添加的RichTextBxo的高度
txtBox.Width = 300; //设置新添加的RichTextBox的宽度
UName = UName + 1; //计数器加一
}
this.Controls.Add(txtBox); //添加RichTextBox
txtBox.Focus(); //新添加的RichTextBox获得焦点
}
}
运行时,前几个RichTextBox添加时,新添加的RichTextBox都是紧相邻添加,但添加的数值一旦超过了窗体的宽度,新添加控件的位置就出现了错位,不是紧贴上一个控件了,越往后,偏移的位置越大
也尝试过用Top,Left定义新添加控件的位置,出现的状况和现在一样
也试验过用VB.net来重写,结果和这个一样,都是数值超出了窗体宽度之后,新控件出现的位置就开始偏移
本来希望达到的效果是,新动态添加的控件,紧贴上一个控件的右侧出现,每个RichTextBox都是紧贴着添加,哪位碰到过类似问题,盼能解惑,谢谢
private void Form1_DoubleClick(object sender, EventArgs e)
{
RichTextBox txtBox = new RichTextBox();
txtBox.Name = "Rtxt" + (UName + 1).ToString();
int left = 0;//按你代码,Location中的y不需要设置。
if (UName > 0)
left = UName * 300;
if (this.HorizontalScroll.Visible) //如果有横向滚动条,
left -= this.HorizontalScroll.Value;//减去滚动条位置,也就是从新定义x轴0坐标,你的问题出在这一步
//下这些重复的提出来写一次就够了
txtBox.Left = left;
txtBox.Height = this.Height - 80; //设置新添加的RichTextBxo的高度
txtBox.Width = 300; //设置新添加的RichTextBox的宽度
UName = UName + 1; //计数器加一
txtBox.Text = $"{UName + 1}:{txtBox.Location}:{this.HorizontalScroll.Value}";
this.Controls.Add(txtBox); //添加RichTextBox
txtBox.Focus(); //新添加的RichTextBox获得焦点
}