Новый экземпляр формы Winforms в классе не работает

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

public void maxForm() //code from the class
{
    Options options = new Options();
    options.WindowState = FormWindowState.Maximized; //not working
}

Это код, который у меня есть в форме.

private void button1_Click(object sender, EventArgs e) //code from form
{
    Class1 class = new Class1();
    class.maxForm();
}

Если я сделаю тот же код, но для другой формы, он будет работать. Он действует так, как будто его заблокировали.

Форма - это класс, так зачем вам другой класс, чтобы что-то делать с формой?

Ňɏssa Pøngjǣrdenlarp 18.12.2018 02:54

Основываясь на вашем комментарии к ответу Backs, кажется, что вы ожидаете, что создание экземпляра чего-то позволит вам изменить другой экземпляр того же типа. Options - это тип, а options содержит ссылку на экземпляр Options. Представьте себе тип автомобиля: Ford Mustang. Теперь вы создаете два экземпляра Ford Mustang (вы покупаете два в представительстве). Вы повредили одну машину, другая машина изменится, чтобы отразить повреждение первой? Нет, потому что это разные машины (экземпляры). Они одного типа (Ford Mustang), но разных экземпляров.

Llama 18.12.2018 03:07
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
2
106
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Разве тебе не нужно показывать форму?

Options options = new Options();
options.WindowState = FormWindowState.Maximized;
options.Show();

@Joseph Возможно, экземпляр формы уже показан, но Options options = new Options(); создает новый экземпляр. Фактически, вы можете показать их обоих бок о бок.

Llama 18.12.2018 02:58
Ответ принят как подходящий

when I make a new instance of the form

Вот и твоя проблема. Вам не нужен экземпляр новый, вам нужен экземпляр в, который уже существует.

Если ваш button1 является частью вашей формы Options, просто сделайте следующее:

private void button1_Click(object sender, EventArgs e) //code from form
{
    WindowState = FormWindowState.Maximized;
}

Или, если, как вы говорите, вам нужно максимизировать его из другого класса (почему?), Вы можете сделать что-то вроде этого:

public void maxForm(Options options) //code from the class
{
    options.WindowState = FormWindowState.Maximized;
}
private void button1_Click(object sender, EventArgs e) //code from form
{
    Class1 class = new Class1();
    class.maxForm(this);
}

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

Joseph 18.12.2018 02:54

Затем вам нужно передать экземпляр вашей открытой формы. Может что-то вроде maxForm(this).

Gabriel Luci 18.12.2018 02:55

Я обновил свой ответ кодом для этого, но это звучит подозрительно - зачем вам создавать класс только для того, чтобы максимизировать форму? У вас есть другие требования для этого класса?

Gabriel Luci 18.12.2018 02:58

Другие вопросы по теме