2016-02-23 2 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

Ключевое слово 'static' означает, что у вас нет экземпляра объекта. Хотя '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); 
Смежные вопросы