• 背景:在窗体开发中使控件的位置不随窗体的大小改变而变化的问题?这是一个同事在开发时遇到的问题,在思考试错之后,写出如下代码。
  • 声明成员:
        Point m_InitLocation;
Size m_InitFormSize;
double scale = ;
Size m_CurrentFormSize;
Point m_CurrentTBLocation;
  • 主要代码:
private void XtraForm1_SizeChanged(object sender, EventArgs e)
{
m_CurrentFormSize = this.Size; scale = (double)((double)m_CurrentFormSize.Height / (double)m_InitFormSize.Height);
m_CurrentTBLocation.Y = (int)(m_InitLocation.Y * scale); scale = (double)((double)m_CurrentFormSize.Width / (double)m_InitFormSize.Width);
m_CurrentTBLocation.X = (int)(m_InitLocation.X * scale); textEdit1.Location = m_CurrentTBLocation; }

这样textEdit1控件就不会随窗体大小的变化而改变位置。

  • 使用扩张方法:
public static class textExtension
{
public static Point NewSize(this DevExpress.XtraEditors.TextEdit textedit, Size oldSize, Size newSize, Point oldtextPoint)
{
double scale = ;
Point location = new Point();
scale = (double)((double)newSize.Height / (double)oldSize.Height);
location.Y = (int)(oldtextPoint.Y * scale); scale = (double)((double)newSize.Width / (double)oldSize.Width);
location.X = (int)(oldtextPoint.X * scale); return location; }
}

此时XtraForm1_SizeChanged函数中只需加入一行代码即可:

    this.textEdit1.Location =    textEdit1.NewSize(m_InitFormSize, this.Size, m_InitLocation);
  • 总结:使用扩张方法,在控件多的时候非常方便,没加入一个控件XtraForm1_SizeChanged函数中就只用加入一行代码。清晰简洁易于修改扩张。

WinForm中控件位置不随窗体大小的变化而改变的更多相关文章

  1. jQuery学习笔记(控件位置定位、尺寸大小的获取等)

    想做一个幽灵按钮出来,效果大概如下图: 当点击按钮的时候,会有四根线条从四个方向飞入,经历从“无-有-无”的闪入过程. 那么我的设计想法是,先在HTML中定义一个按钮,然后在jQuery中设计按钮点击 ...

  2. winform中控件的简单数据绑定

    是因为在学习组件开发过程中有个Bindable的属性,不明白意义,然后才接触到winform的数据绑定,想着先把数据绑定这块看一下,然后去测试下是否Bindable属性设为false,就不能绑定该属性 ...

  3. C#中使用多线程访问Winform中控件的若干问题

    我们在做winform应用的时候,大部分情况下都会碰到使用多线程控制界面上控件信息的问题.然而我们并不能用传统方法来做这个问题,下面我将详细的介绍. 首先来看传统方法: public partial  ...

  4. (转)c#(wince)中使用多线程访问winform中控件的问题

    我们在做winform应用的时候,大部分情况下都会碰到使用多线程控制界面上控件信息的问题.然而我们并不能用传统方法来做这个问题,下面我将详细的介绍. 首先来看传统方法:  public partial ...

  5. c#中解决winform中控件不能输入汉字的办法

    设置控件的ImeMode属性 如:    textBox.ImeMode = System.Windows.Forms.ImeMode.On; 其中枚举有如下值:

  6. 解决duilib水平布局(HorizontalLayout)中控件位置计算错误的问题

    水平布局中的控件无法布满整个布局,右側留有缝隙 修正后的样子 原因是布局中的代码计算Padding时候逻辑不对导致 修正后的代码到https://github.com/CodeBees/duilib- ...

  7. 控制winform中控件的输入格式

    private void txtNum1_KeyPress(object sender, KeyPressEventArgs e) { ') && e.KeyChar != '\r' ...

  8. Delphi子窗体随主窗体大小而变化

    当然办法有很多种,我建议用TRzsplitter更好点, TRzsplitter分割,在其上边放置panel,然后把align置为alClient,则可以随着主窗体的大小而一起变动 选中此控件右键ed ...

  9. Unity 通过Animation实现控件位置的转换

    Unity版本:4.5.1 NGUI版本:3.6.5 参考链接:http://blog.csdn.net/unity3d_xyz/article/details/23035521,作者:CSDN in ...

随机推荐

  1. 《你不知道的JavaScript》整理(六)——强制类型转换

    JavaScript中通常分为两种类型转换,"隐式强制类型转换"(implicit coercion)和"显式强制类型转换"(explicit coercion ...

  2. 如何配置多台mysql 服务器?

    当我们数据量增大时,数据库需要进行扩张时,或者做高可用,那么我们就需要用到同时多台mysql服务器.通过配置:可以实现,一台主mysql,负责记录数据的变化,多台从mysql,查询结果.修改文件:/w ...

  3. Mac OSX Sierra WiFi connecting problem

    吐槽一下,苹果的质量管控越来越差了. Mac OSX Sierra有时突然或升级后会遇到wifi不停重连连不上问题,现象为不停地连接wifi. 网上有人说删除 /Library/Preferences ...

  4. ajax上传图片

    选择文件后 ajax上传图片到后台,后台执行保存操作,返回上传的图片路径,显示到页面 需要引入ajaxfileupload.js js代码 <script type="text/jav ...

  5. Linux centos7环境下安装Nginx

    Linux centos7环境下安装Nginx的步骤详解 1.    首先到Nginx官网下载Nginx安装包 http://nginx.org/download/nginx-1.5.9.tar.gz ...

  6. mysql 索引篇

    一.索引优化   索引优化主要还是依赖explain命令,关于explain命令相信大家并不陌生,具体用法和字段含义可以参考官网explain-output,这里需要强调rows是核心指标,绝大部分r ...

  7. Eclipse集成Tomcat教程

    (初学者都会问一个问题,就是Eclipse好用还是Myeclipse好用.好吧,这个问题我昨晚才刚刚问完,哈哈,因为我一开始学Java都是直接下了一个MyeClipse来用的,没想过太多.其实也是,两 ...

  8. Maven 自定义 archetype

    最近在公司经常要写一些 storm-job 工程的骨架(archetype)非常相似,为了能够将大家的工程结构固定下来以及节约建工程的成本,所以给组内自定义了maven-archetype,中途遇到了 ...

  9. [SinGuLaRiTy] COCI 2011~2012 #2

    [SinGuLaRiTy-1008] Copyright (c) SinGuLaRiTy 2017. All Rights Reserved. 测试题目 对于所有的题目:Time Limit:1s   ...

  10. Python之路-Linux命令基础(1)

    开启Linux操作系统,要求以root用户登录GNOME图形界面,语言支持选择为汉语               使用快捷键切换到虚拟终端2,使用普通用户身份登录,查看系统提示符,使用命令退出虚拟终端 ...