C# "new" command
本文关键字:quot command new | 更新日期: 2023-09-27 18:10:16
我有一个问题,当我试图重新定位面板时,例如命名为pPan
,我有两种不同的方法来做到这一点:
在按钮的click事件中,我写入
pPan.Location = new Point (
pPan.Location.X +10 , pPan.Location.Y );
或者我可以写:
pPan.Location.X += 10;
那么这里有什么区别呢?为什么我要创建这个new Point
?
Location属性的类型是Point,它是一个结构体。您可能会收到类似
的错误。不能修改的返回值"System.Windows.Forms.Control。Location',因为它不是一个变量
设置它的X、Y值。
,但你可以指定新的点对象:
pPan.Location = new Point (
pPan.Location.X +10 , pPan.Location.Y );
Control.Location
Property
问题:c#以编程方式更改对象的位置因为Point类是一个值类型(Visual Basic中的结构),结构),它是按值返回的,这意味着访问属性返回控件左上角点的副本。所以,调整由此返回点的X或Y属性属性不会影响"左"、"右"、"顶"或"底"属性控件的值。要调整这些属性,请设置每个属性值,或者用新的Point设置Location属性。如果如果控件是窗体,则Location属性值表示在屏幕坐标的左上角。
如果Point
是struct
,您必须使用第一个,因为当您调用该属性时,它返回Location
的副本,并且您尝试修改该副本。
区别在于第一种方式是为Point对象分配新的内存。第二种方法是只改变现有对象的属性。
尽可能多地操作现有对象是一个很好的做法。所以我建议你用第二种方法来改变位置