我似乎运气不好让除了formX_load(..)之外的任何事件运行起来。这就是我希望有人可以帮助我。
我启动了一个空项目,在其上添加了一个标签(label1),然后从MSDN的示例中复制了代码。 (我在自己的标签文本中添加了)。
http://msdn.microsoft.com/en-us/library/system.windows.forms.control.move%28v=vs.80%29.aspx
private void Form1_Move(object sender, System.EventArgs e)
{
this.Text = "Form screen position = " + this.Location.ToString();
label1.Text = "You Moved Me!";
}
所有内容都会编译并运行,但无论我移动多少或重新调整大小,都不会更改标签文本或表单文本。
我也尝试过OnMove,OnMouseMove和LocationChanged示例同样的问题......它们似乎永远不会被触发。
我在这里缺少什么?这似乎太容易搞砸了,但唉... ...
感谢您的时间。
答案 0 :(得分:2)
这有效:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.Move +=new EventHandler(Form1_Move);
}
private void Form1_Move(object sender, System.EventArgs e)
{
this.Text = "Form screen position = " + this.Location.ToString();
}
}
答案 1 :(得分:2)
重写OnMove应该有效并且是首选方法。你是否在覆盖的方法中调用了基类OnMove方法?
对于_Move事件,您是否在创建表单实例时连接了事件处理程序?
类似的东西:
this.Move += this.Form1_Move;
答案 2 :(得分:1)
有两个答案已经解释了如何以编程方式添加处理程序 - 正如我在评论中提到的那样。如果您更喜欢从Visual Studio中执行此操作,只需加载表单设计器,查看属性(通常位于右下角),单击“事件”选项卡,然后双击“OnMove事件”。一旦你双击它,VS将自动为你添加处理程序,并带你到方法的主体,这样你就可以将代码放在那里。