Как предоставить статический метод в формах?

Я только что изменил свое меню модификаторов на общедоступное, и теперь я получаю это

«CS0120 Требуется ссылка на объект для нестатического поля, метода или свойства «HomeForm.checkBeamToolStripMenuItem»

Как мне предоставить статический метод в моем коде? заранее спасибо

Мой код был:

private void AnalysisForm_FormClosing(object sender, EventArgs e)
 {
    HomeForm.checkBeamToolStripMenuItem.Enabled = true;
 }

person Tramyer    schedule 19.06.2017    source источник
comment
HomeForm и AnalysisForm определены в отдельных проектах? если да, вам нужно передать экземпляр вызываемой формы (например, HomeForm) в вызывающую форму (AnalysisForm) во время ее инициализации.   -  person Joseph Wu    schedule 19.06.2017
comment
Если HomeForm открыл AnalysisForm, то просто подключите и событие FormClosed() AnalysisForm в HomeForm при создании AnalysisForm, и вам вообще не нужно будет передавать какие-либо ссылки.   -  person Idle_Mind    schedule 19.06.2017


Ответы (1)


Вы совершаете классическую ошибку, которая, кажется, вызывает массу подобных вопросов здесь, в StackOverflow, а именно о том, как ссылаться на одну форму из другой. (ищите это здесь, в stackoverflow, и вы найдете множество вариантов того, как это сделать)

Но основная идея для этого заключается в том, что вам нужна ссылка объекта на другую форму. То, что вы пытаетесь сделать, это получить доступ к классу «HomeForm», который не является объектом.

поэтому где-то ваши формы созданы, вам нужно передать ссылку на объект в форму анализа, чтобы вы могли сказать ей что-то делать.

var homeform = new HomeForm();
var analysis = new AnalysisForm(homeform);

хотя я бы сделал это совсем по-другому для себя, начав с создания метода на домашней форме вместо доступа к его элементам управления.

person Keith Nicholas    schedule 19.06.2017