2011-10-06 155 views
0

我似乎有一些運氣不好的任何事件超出formX_load(..)運行。這就是我希望這裏有人能幫助我。Form1_Move()永遠不會觸發

我開始了一個空的項目,在它上面添加了一個標籤(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的例子來解決同樣的問題......它們似乎永遠不會被觸發。

缺少什麼我在這裏?這似乎太容易能夠搞砸了,但唉...

感謝您的時間。

+1

您是否真的爲OnMove事件添加處理程序? – Icarus

+0

我在這裏出去,說不。我至少5年沒有碰過C#,並且鏽跡斑斑... – challengerTA

+0

@challenferTA看到我的答案。 – Icarus

回答

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(); 
    } 

} 
+0

那工作得很好!我想一個經驗法則是,對於任何想要讓你必須在開始時創建一個像這樣的事件處理程序的事件?我很多年都不用C#,所以我不得不重新學習一切。非常感謝你! – challengerTA

2

重寫OnMove應該有工作,是首選的方法。您是否在您的覆蓋方法中調用了基類OnMove方法?

對於_Move事件,您是否在創建Form實例時連接了事件處理函數?

喜歡的東西:

this.Move += this.Form1_Move; 
+0

我沒有想到要這樣做。我是在假設MSDN「examples」是正在運行的例子,並且我不需要做其他任何事情來讓他們工作的情況下運行的。顯然是一個致命的錯誤。 是你在那裏加入事件和處理程序的首選方式?還是薩米奇的方法更合適? 這兩個工作,我真的很感謝你的幫助。 – challengerTA

+0

是否重寫OnMove或處理事件是個人選擇。我一直認爲重寫*你自己的類中的On *方法是首選。顯然,如果你使用別人的課程,你將不得不處理該事件。 –

+0

下面是一個可能有所幫助的鏈接:http://stackoverflow.com/questions/3670806/form-load-event-or-override-onload –

1

有2個答案已經解釋瞭如何添加處理程序 - 作爲我對我的comment-提及。如果您更願意從Visual Studio中執行此操作,只需加載表單設計器,查看屬性(通常位於右下角),單擊事件選項卡並雙擊OnMove的事件。一旦你雙擊它,VS會自動爲你添加處理程序,並帶你進入方法的主體,這樣你就可以將代碼放在那裏。

enter image description here

+0

你爲我拍了截圖嗎?這對未來非常有用。我記得在做VB6時做類似的事情。再次感謝您的幫助。我希望我有一個以上的向上箭頭給予。 – challengerTA

+0

@challengerTA感謝和1 upvote是綽綽有餘。 ;) – Icarus

相關問題