ctrl.Left = 666666666;有时候能设置成66666666,有时候变成32767,为什么?

解决方案 »

  1.   

    难道是c#根据ctrl当时的情况,才改变输入的left值????
      

  2.   

    left 默认是32位int类型,int的上限是
    -2,147,483,648 to 2,147,483,647
    16位的int才是32767吧
     
      

  3.   

    刚查了一下
    http://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=EN-US&k=k(SYSTEM.WINDOWS.FORMS.CONTROL.LEFT);k(TargetFrameworkMoniker-%22.NETFRAMEWORK%2cVERSION%3dV4.0%22);k(DevLang-CSHARP)&rd=true
    确实是32位int啊,奇怪的问题,Lz是不是把他赋给16位的int了?
      

  4.   

    刚测了一下,果然是有问题
                int i= 6666666;            button2.Left = i;            MessageBox.Show(button2.Left.ToString());
    看不到内部代码,难道left属性默认转换时用的是16位int?
      

  5.   

    经测试Left 的可用范围是 -32768~32767
    Right 的可用范围是 -32768~98302
    Width 的可用范围是 0~65535足够用的了
      

  6.   

    建议楼主打开msdn,看看Int16结构
      

  7.   

    .Left=666666666;之后,.Left不会马上被改变比如当从即使变量里查看这个属性的时候,就会变成32767。