1、Panel上设置某个按钮居中
this.btnExit.Location = new System.Drawing.Point(pnlButton.Width / 2, pnlButton.Height / 2);
2、Panel上多个按钮自动排序
原始状态:
调整顺序的代码:
/// <summary>
/// 设置按钮显示位置
/// </summary>
/// <param name="targetPanel">要设置按钮的Panel</param>
/// <param name="buttonSpace">按钮之间的间隔</param>
public void SetButtonCenter(Panel targetPanel, int buttonSpace)
{
int length = 0;
List<Button> listBtn = new List<Button>();
System.Windows.Forms.Control.ControlCollection c = targetPanel.Controls;
foreach (Button btn in c)
{
listBtn.Add(btn);
length += btn.Width + buttonSpace;
}
int pnlLength = targetPanel.Width;
if (length > pnlLength) //本身按钮的长度总和大于了panel的长度,不调整
return;
int startPos = (pnlLength - length) / 2 - 10; //左缩进10个点位
int yPos = targetPanel.Height / 2;
int xPos = startPos;
foreach (Button btn in listBtn)
{
btn.Location = new System.Drawing.Point(xPos, yPos);
xPos += btn.Width + buttonSpace;
}
}
初步调整后的样子:
注意奥亲,按钮顺序是反向的!
那么怎么让按钮顺序正确呢?
代码如下:
private void Form1_Load(object sender, EventArgs e)
{
SetButtonCenter(panelTest, 2);
}
/// <summary>
/// 设置按钮显示位置
/// </summary>
/// <param name="pnlButton">需要调整按钮顺序的Panel</param>
/// <param name="buttonSpace">按钮间隔</param>
public void SetButtonCenter(Panel targetPanel,int buttonSpace)
{
int length = 0;
List<Button> listBtn = new List<Button>();
System.Windows.Forms.Control.ControlCollection c = targetPanel.Controls;
foreach (Button btn in c)
{
listBtn.Add(btn);
length += btn.Width + buttonSpace;
}
int pnlLength = targetPanel.Width;
if (length > pnlLength) //本身按钮的长度总和大于了panel的长度,不调整
return;
int startPos = (pnlLength - length) / 2 - 10; //左缩进10个点位
int yPos = targetPanel.Height / 2;
int xPos = startPos;
listBtn.Sort(new ButtonSort());
foreach (Button btn in listBtn)
{
btn.Location = new System.Drawing.Point(xPos, yPos);
xPos += btn.Width + buttonSpace;
}
}
public class ButtonSort : IComparer<Button>
{
#region IComparer<Button> Members
//IComparer<T> 接口:定义类型为比较两个对象而实现的方法。
public int Compare(Button x, Button y)
{
if (x.TabIndex >= y.TabIndex)
return 1;
else
return -1;
}
#endregion
}
此时的效果如下图:
分享到:
相关推荐
winform panel 绘制边框阴影 ,可以设置具体显示哪个边框的阴影。 static Image shadowDownRight = new Bitmap(typeof(ShadowPanel), "Images.tshadowdownright.png");//下右 static Image shadowDown = new ...
C# winform 透明Panel ,可以当一个隐藏的按钮使用,写个关闭程序的功能,或者其他功能
Winform去掉最大化最小化关闭按钮(不是关闭按钮变灰),只此一家,自己看效果
5、我们在拖动单个Panel控件的时候,它内部的控件也会随着移动,以保持和Panel的相对位置不变。同理,删除Panel控件时,它所包含的所有控件也会被删除掉。 6、当我们调整Panel控件所包含的控件的Anchor和Dock属性的...
C# Winform遍历控件(窗体、Panel的子控件)Controls ,适合在桌面应用程序中快速上手及运用
下载后解压缩即可运行使用,代码...3.为窗体添加SizeChanged事件,并在其方法Form1_SizeChanged中,首次记录窗体和其控件初始位置和大小,之后调用类的自适应方法,完成自适应。 4.Panel,DataGridView等控件同样适用。
winform实现窗体界面 字幕上下来回滚动。可随意控制显示内容的大小,可随意控制窗体界面大小。代码简单易懂。这里是用的.NET 4.0版本,如果你只安装别这个更低的版本,只需要把代码用记事本打开,copy代码,就行了 ...
C# winform 子窗体调用父窗体函数实现...在父窗体分From1内嵌一个panel1,在panel1里载入From2,点击在子窗体From2中的按钮,清除panel1里的From2,新载入From3,点击在子窗体From3中的按钮,panel1清除,重新载入From2
资源为Winform用户自定义组件库,是自己平时做项目...改库包含了常用的,按钮,圆角按钮,复选框,单选框,滚动条,带标题的Panel,Label,圆角窗口等等,基本项目用到的组件覆盖完了,能够实现一个软件的扁平化设计。
C#中画直线,按确定按钮,可以按照预定的路线,画一条直线。
提供免费下载 Timer控件定时更新UpdatePanel - DemoVS2010版.zip
WinForm窗体 Button 按钮 Textbox 文本框 ComboBox 下拉列表框 Checkbox 复选框 RadioButton 单选框 GroupBox 分组控件 Label 标签 ListBox 列表框 PictureBox 图片框 DateTimePicker 日期时间控件 ...
Winform实现窗体内嵌入第三方应用窗体,只需要知道窗体名称,即可将第三方应用的窗体嵌入到自己的程序中,使用WinForm的Panel控件作为其父容器,并且第三方窗体仍然保持原有的功能,如点击,输入等,可以随着自己的...
通过鼠标点击事件控制panel的自动滚动条移动,实现在触摸屏上的手指拖动效果
* 主窗体下部添加一个Panel乘放ToolStrip控件以实现ToolStrip在窗体下部定位。 * 当ToolStrip控件中子控件超出屏幕时,拖动控件可以实现滑动效果。拖动到控件边缘距窗体边缘1/3宽度时(可设), 自动回弹。拖动...
DOTNET_C# winform常用控件的使用,在一个winform界面演示了常用控件的操作,非常适合初学者使用,编程老手也可以用来做备忘用。源码内容包括: 1.button按钮控件 2.Label控件 3.TextBox 控件 4.RichTextBox 控件 5....
需要注意的点 最好事先知道你需要的按钮的大小,比如我需要把button放入到size高度为40px的panel中,则你的图片最好像素值35以下,不然会出现图片超过边框的效果;如果要将设计好的按钮放置到容器内,需考虑到容器...
使用容器(如Panel)来组织控件,或者使用布局管理器(如FlowLayoutPanel、TableLayoutPanel)来自动调整控件的大小和位置。 编写事件处理程序: 为组件添加事件处理逻辑。例如,为按钮(Button)添加点击事件...
C# winform控件使用案例18种窗体使用案例【适合入门者学习使用】,具体如下所示 01-窗体学习 02-TextBox文本框 03-Combobox 04-CheckBox 05-RadioButton单选按钮 06-Label标签 07-ListBox列表框 08-PictureBox图片框...
C# DataGridView单元格中动态添加多个控件。开发环境VS2012。