C # Установите флажок статическим - PullRequest
1 голос
/ 26 мая 2011

У меня есть флажок, который я создал для форм Windows, как я могу установить его на статический?

public static CheckBox checkthis;

Этот код создает новый как статический, что я хочу сделать, это установить тот, который я создал в конструкторе, в статический.

Обновление:

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

public static CheckBox checkthisnew;

...
checkthisnew = checkthis;

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

Извините, что не разъяснил мои аргументы в пользу этого, я ценю ваши ответы, спасибо.

Ответы [ 3 ]

2 голосов
/ 26 мая 2011

Ничего хорошего не получится, если сделать зависимый пользовательский интерфейс статическим.Одно дело сделать компонент статичным, и это может быть нормально, но для чего-то вроде CheckBox, вы просто напрашиваетесь на неприятности.Для начала, один элемент управления может иметь только одного родителя.Таким образом, вы не можете просто сделать один экземпляр своего элемента управления и ожидать, что сможете добавить его к нескольким формам, и все будет волшебным образом синхронизировано.Если вам нужно поделиться некоторыми значениями, сделайте это правильно и свяжите их, зарегистрируйте некоторые события, поделитесь значением , а не элементом управления, содержащим значение, или другими подобными методами.

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

Вы, вероятно, пытаетесь поделиться некоторым значением bool, которое представляет CheckBox.Сделайте статическим свойством .

public partial class MyForm : Form
{
    public static bool IsToggled { get; set; }
}

Если где-то внизу строки вы хотите связать это с событием или чем-то еще, вы всегда можете изменить реализацию средств доступа.

2 голосов
/ 26 мая 2011

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

0 голосов
/ 26 мая 2011

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

Попробуйте что-то вроде этого:

public class MyForm : Form
{
    public static bool IsWhateverSet {get; private set;}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...