你们也是这样的吗?。。

crystal_lz 2016-06-20 01:00:26

Form frm = new From();
frm.Location = new Point(10,10);
frm.Size = new Size(100,100);
frm.Show();

上面的代码 居然只有Size生效了 location 还是按照windows的默认位置出来
原本我是Location是写在构造器里面的 大概代码就像下面

public partial class Form2 : Form
{
public Form2() {
InitializeComponent();
//其他代码
this.Location = new Point(10, 10);
}

private void Form2_Load(object sender, EventArgs e) {
MessageBox.Show(this.Location.ToString());
//其他代码
}
}
//====调用的地方
Form frm = new Form2();
MessageBox.Show(frm.Location.ToString());
//ShowWindow(frm.Handle, 5);
//frm.Visible = true;
frm.Show();

两次弹出来的对话框坐标不一样 实在是想不出有什么地方对 location 进行了设置 唯一不知道的代码就是在Show里面了 Show里面是在对 this.Visable 进行设置 而 this.Visable 的 set {} 里面是调用的win32api 层次并没有跟太深
我记得以前都不是这样的啊 还是说我以前就记错了???
目前把 frm.Location = xx 放到 frm.Show 后面就正常 或者在 From_Load 中去设置 就没有问题
可是我记得以前我不是这样用的啊。。。
...全文
204 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
crystal_lz 2016-06-20
  • 打赏
  • 举报
回复
引用 4 楼 LeiRobin 的回复:
这个完全可以在属性里面手动设置啊
不太习惯在属性窗口设置 而且 坐标是动态算出来的 没法在属性窗口上设置 上面 写死的 只是为了演示我存在的问题 让代码简化
姓小名白丶 2016-06-20
  • 打赏
  • 举报
回复
这个完全可以在属性里面手动设置啊
crystal_lz 2016-06-20
  • 打赏
  • 举报
回复
引用 1 楼 xdashewan 的回复:
把form的startposition改为manual,默认是windows默认位置的
你这么一说 有点道理 没有想到这个 平时只是需要居中的时候使用 CenterParet/Screen 以为 自己指定位置就不用管了 却忘了默认是DefaultLocation
Forty2 2016-06-20
  • 打赏
  • 举报
回复
Form frm = new Form(); frm.StartPosition = FormStartPosition.Manual; frm.Location = new Point(10, 10); frm.Size = new Size(100, 100); frm.Show();
xdashewan 2016-06-20
  • 打赏
  • 举报
回复
把form的startposition改为manual,默认是windows默认位置的

110,475

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧