设定了自定义属性,来控制控件的宽度或高度,但数据会不正常

虽然设定了某一个数值,但老是自动变为另一个数值

,如,宽度设置为100,但运行或重新打开窗体设计界面,宽度自动变为133,如多打开几次,甚至会越变越大,寻找很久,也找不到原因,在多次尝试后,才发现原因

之前为省事,在设置自定义属性时,使用如下格式:

  1. <Category("MAX Member")> _
  2. Public Property mShowControlLength As Integer
  3. Get
  4. Return xShow.Width
  5. End Get
  6. Set(value As Integer)
  7. xShow.Width = value
  8. End Set
  9. End Property

从理论上来说,没有任何问题,但是就是会造成这个值不能固定,甚至越变越大,后来改成如下格式,终于固定:

  1. <Category("MAX Member")> _
  2. Public Property mShowWidth As Integer
  3. Get
  4. Return _showWidth        ‘使用自定义的变量来输出设定值
  5. End Get
  6. Set(value As Integer)
  7. _showWidth = value
  8. xShow.Width = _showWidth
  9. If (Me.DesignMode) Then
  10. xItemPanel.Refresh()
  11. End If
  12. End Set
  13. End Property

?原因分析,由于控件中的控件本身并不存储设定值,那么在获取宽度时,是程序根据当时情况计算得到的,计算时的宽度是无法预计的,所以会显示为随机变大的值,然后,再根据此值保存为设置值。就发生了这种情况,吸取这次教训,不要再犯

时间: 2024-10-28 15:40:32

设定了自定义属性,来控制控件的宽度或高度,但数据会不正常的相关文章

Android下在onCreate中获取控件的宽度和高度(通过回调)

有时候需要在onCreate方法中知道某个View组件的宽度和高度等信息, 而直接调用View组件的getWidth().getHeight().getMeasuredWidth().getMeasuredHeight().getTop().getLeft()等方法是无法获取到真实值的,只会得到0. 这是因为View组件布局要在onResume回调后完成. 下面提供实现方法: 第一种: onGlobalLayout回调会在布局完成时自动调用 img1.getViewTreeObserver().

Android在OnCreate中获取控件的宽度和高度

原文链接:http://www.cnblogs.com/wt616/archive/2012/05/11/2496180.html 在Android中,有时需要对控件进行测量,得到的控件宽度和高度可以用来做一些计算.在需要自适应屏幕的情况下,这种计算就显得特别重要.另一方便,由于需求的原因,希望一进入界面后,就能得到控件的宽度和高度. 可惜的是,根据我的验证,利用网上转载的那些方法在OnCreate函数中获取到的仍然是0(希望搞技术的能自己验证过再转载),例如Measure方法之后调用getMe

如何在onCreate()方法中,获取得到控件的宽度和高度?小意思!

在onCreate()方法中,如果想获得控件的宽度高度,那就要使用下面的方法了. orderTime.post(new Runnable() { @Override public void run() { System.out.println("高"+orderTime.getHeight()); System.out.println("宽"+orderTime.getWidth()); } }); 其中,orderTime是一个TextView.当然,这里只是一个

Android 设置子控件的宽度或高度为 match_parent来填充父控件中的剩余宽度或高度的方法

先上几张效果图, 如下:          上述四张图要实现的布局效果是: 假如父控件中包含两个子控件, 其中一个子控件(上图中为红色button)的宽度是固定数值, 而另一个子控件(上图中为绿色button)的宽度不固定, 要想让这两个子控件的总宽度刚好等于父控件的宽度.可以将宽度不固定的那个控件的宽度设置为match_parent来实现, 但有些细节需要注意, 否则即使设置了match_parent, 也不能出现如上的效果. 注意细节如下: 上述效果可以使用RelativeLayout实现.

设定当前视图中所有控件字体的方法

     本范例实现的是对界面中所有的控件一次性的设置字体样式.思路是找到父控件,然后遍历子控件.如果子控件是可以修改文字的控件,那么就设置文字.这用到了控件的继承,很多控件都是继承与textview的,所以将控件均转为textview,最后设置字体即可. 布局文件 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.

winform中,如何控制控件位置随窗体的大小改变而改变

winform中,如何控制控件位置随窗体的大小改变而改变 有如下3种方法: 方法1 [csharp] view plaincopy using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace MarkPrint

android 控制控件的位置和大小

方法一: Android的界面布局可以用两种方法,一种是在xml中布局,一种是和JAVA中Swing一样在JAVA代码中实现Ui界面的布局,用xml的布局管理器布局是很方便的,但是在一些代码中需要动态的显示界面,这个时候xml就缺少了一种灵活性,使用XML和JAVA代码中布局可以解决这样的问题.在此只对JAVA代码中的LoyoutParams方法进行理解及使用. LoyoutParams类中主要保存的是布局参数,元素或组件可以通过这个类实现对布局参数的设置.在xml中它对应的是元素的"空间位置&

【安卓笔记】带自定义属性的view控件

开发中经常需要自定义view控件或者组合控件,某些控件可能需要一些额外的配置.比如自定义一个标题栏,你可能需要根据不同尺寸的手机定制不同长度的标题栏,或者更常见的你需要配置标题栏的背景,这时候,你就会考虑到你写的view的扩展性问题,通常情况下,我们可以为这个自定义的标题栏加上一些setXXX方法,供外界调用,设置其颜色.长度等属性.但是我们都知道,在使用系统控件时,我们大多数情况下并不需要在代码中配置控件,而仅仅只需在布局文件中对控件宽.高.颜色等进行配置,这样做的好处就将UI与业务逻辑解耦,

winform中DataGrid控件的宽度设置

最近修改一个win5.0的PDA程式,碰到一个问题.就是给DataGrid控件绑定数据的时候,这个控件的宽度不能调整,有时候数据较长,就显示不全.然后想在程式里自定义它的宽度,设置不成功.然后网上没找到合适的方法去设置它的宽度.最后从同事LYL那里得到解决方法 设置数据源: this.dataGrid1.DataSource = ds.Tables[1].DefaultView; 在这之前给DataGrid控件添加表样式,代码如下: DataGridTableStyle h = new Data