Form1_Move()永远不会触发

时间:2011-10-06 18:55:36

标签: c#

我似乎运气不好让除了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示例同样的问题......它们似乎永远不会被触发。

我在这里缺少什么?这似乎太容易搞砸了,但唉... ...

感谢您的时间。

3 个答案:

答案 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将自动为你添加处理程序,并带你到方法的主体,这样你就可以将代码放在那里。

enter image description here