2016-02-23 145 views
-7

我有一個用於從兩點創建LineShape的代碼。C#在類中使用'this'關鍵字

class MyMenu 
{ 
    public static void AddLine() 
    { 

     ShapeContainer canvas = new ShapeContainer(); 
     LineShape theLine = new LineShape(); 

     canvas.Parent = this; 

     theLine.Parent = canvas; 
     theLine.BorderColor = SystemColors.ControlDarkDark; 

     theLine.StartPoint = new System.Drawing.Point(-3, 154); 
     theLine.EndPoint = new System.Drawing.Point(212, 154); 

    } 
} 

。我想創建一個類並從那裏使用,但我最終有一個錯誤。

Keyword 'this' is not valid in a static property, static method, or static field initializer  

我試圖解決這個問題,但沒有任何東西!

Form1 MyForm = new Form1(); 
     canvas.Parent = MyForm; 

謝謝!

+0

檢查:https://msdn.microsoft.com/en-us/library/98f28cdx.aspx –

+3

什麼是 「但沒有」 呢?在任何情況下,'this'在* static *方法中都沒有意義 - 這指向當前對象實例,靜態方法沒有當前實例。這是基本的C#。 –

+0

關鍵字'靜態'意味着你沒有一個對象的實例。雖然'this'是指當前的實例。從方法聲明中刪除'static'。 – bashis

回答

1

我不確定,你可以嘗試將表單引用傳遞給方法(如果這是你的意思)。

class MyMenu 
{ 
    public static void AddLine(Form f) 
    { 

     ShapeContainer canvas = new ShapeContainer(); 
     LineShape theLine = new LineShape(); 

     canvas.Parent = f; 

     theLine.Parent = canvas; 
     theLine.BorderColor = SystemColors.ControlDarkDark; 

     theLine.StartPoint = new System.Drawing.Point(-3, 154); 
     theLine.EndPoint = new System.Drawing.Point(212, 154); 

    } 
} 

而且從形態:

MyMenu.AddLine(this);