C#窗体中按钮按照一定规则摆放位置的算法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#窗体中按钮按照一定规则摆放位置的算法相关的知识,希望对你有一定的参考价值。
VS2010,代码实现将多个按钮添加到GroupBox控件中,使其按照流布局方式摆放而不是覆盖,应该如何写???并且获取当前GroupBox在窗体中的位置(x,y)和添加的按钮的位置信息(x,y)
private void Form1_Load(object sender, EventArgs e)Button btn;
int y = 0;
int x = 0;
for (int i = 0; i < 10; i++)
btn = new Button();
if (x > groupBox1.Size.Width)
x = 0;
y += 30;
btn.Size = new Size(80, 30);
btn.Location = new Point(x, y);
x += 80;
MessageBox.Show(btn.Location.X.ToString()+","+ btn.Location.Y.ToString());
groupBox1.Controls.Add(btn);
MessageBox.Show(groupBox1.Location.X.ToString() + "," + groupBox1.Location.Y.ToString());
参考技术A 用WPF写吧,Grid、StackPanel、DockPanel这些布局吧
如何在c#中实现单击一个按钮后,再在窗体内点击一次鼠标,把该按钮移动到第二次点击的位置?
rt,新手求教。
private void button1_Click(object sender, EventArgs e)
//如何添加一次单击触发的事件?
具体点,在你的class From1中,构造函数上面加一个
bool isClick=false;
在button1_Click函数中
isClick=true;
为窗体添加一个Click响应消息
在From1_Click函数中
if(isClick)
button1.Location=new Point(e.X-button1.Size.Width/2,e.Y-button1.Size.Height/2);
isClick=false;
追问
方法可行,但是我实际上想继承一个带有这个功能的button怎么写?
追答那样也行啊 就是在继承的类中加一个移动的方法,最终还是要在窗体的单击函数中调用这个方法,毕竟你点的是窗体,无法引起按钮的任何消息响应,只能引起窗体的单击消息
参考技术B 定义一个全局变量isClick=falsebutton1_Click里isClick=true
form_Click里
if isClick=true
按钮设置新位置
isClick=false追问
方法可行,但是我实际上想继承一个带有这个功能的button怎么写?这种方法不行。
追答你的要求是点击窗体,按钮移动到点击的位置,这涉及到窗体和点击的位置
光靠button自身的属性是无法实现的
你可以继承一个button类,里面增加一个移动到新位置的方法
当点击form的时候调用这个方法
windows form
追答public partial class Form1 : Form/// <summary>
/// 是否可移动
/// </summary>
private Boolean IsMove = false;
public Form1()
InitializeComponent();
private void Form1_MouseClick(object sender, MouseEventArgs e)
if (e.Button == MouseButtons.Right || e.Button == MouseButtons.Left)
Point p = MousePosition;//获取位置
//其他需要执行的代码
if (IsMove)
this.button1.Location = p;
private void button1_Click(object sender, EventArgs e)
IsMove = true;
找到窗体的MouseClick事件,双击,在这个事件下,下 button移动的代码!
已试过,试的时候,请将窗体最大化!
以上是关于C#窗体中按钮按照一定规则摆放位置的算法的主要内容,如果未能解决你的问题,请参考以下文章