Используя ApplicationSettings для хранения свойства Checked для WinForms RadioButtons

Используйте resignFirstResponder в touchesBegan, например так:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch * touch = [touches anyObject];
    if(touch.phase == UITouchPhaseBegan) {
        [self.myTextField resignFirstResponder];
    }
}

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

Кроме того, в Интерфейсном Разработчике вам необходимо включить флажок «Взаимодействие с пользователем включено» для представления или использовать программно:

myView.userInteractionEnabled = YES;

5
задан CoderDennis 1 June 2009 в 23:29
поделиться

3 ответа

Я могу ответить на эту часть вашего вопроса:

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

Настройки приложения хранятся в вашем классе Settings в пространстве имен Properties . Класс Settings имеет статическое свойство, называемое Default , которое представляет текущие настройки для вашего приложения. Итак, в событии Closing вашей основной формы вы вызываете:

Properties.Settings.Default.Save();

..., чтобы сохранить настройки.

Аналогичным образом вы можете перейти к настройкам программно, используя имя параметра: Properties.Settings.Default.MyRadioButtonState (или как вы его называли).

3
ответ дан 18 December 2019 в 09:10
поделиться

Это поведение объясняется в пункте 5 здесь:

http://turbulentintellect.blogspot.com/2008/07/surviving-winforms-databinding.html

Одним из возможных решений может быть собственный GroupGox: {{ 1}} Лучший способ привязки группы радиокнопок в WinForms

3
ответ дан 18 December 2019 в 09:10
поделиться

Я отвечаю на эту часть вашего вопроса:

Как мне устранить необходимость в двукратном нажатии переключателей?

Вы можете добавить следующий обработчик событий к событию Click события каждый из трех RadioButton (из которых свойства Checked привязаны к параметрам приложения) в вашем GroupBox:

Private Sub RadioButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tomRadioButton.Click, dickRadioButton.Click, harryRadioButton.Click
    If sender.Checked = False Then
        sender.Checked = True
    End If
End Sub

Он работает, даже несмотря на то, что после щелчка на нем требуется полсекунды для проверки снятого RadioButton.

Причина проблемы была объяснена два года назад (в 2008 г.) в разделе 5 сообщения Surviving WinForms Databinding в блоге Turbulent Intelect (Спасибо, ohadsc , за ссылку):

Правило 5: Не привязывайте к интерактивным радио-кнопкам

Я знаю, как было бы здорово, если бы вы мог бы просто связать вашу связку радио кнопки к свойству перечисления. я действительно делать. Вы думаете, что просто собираетесь подключить некоторые события Format и Parse чтобы перевести обратно в ваше перечисление, и все будет хорошо. Это было бы так чертовски удобно, если действительно сработало. Но WinForms просто не подходит для этого. Уже 3 полных релиза (или это 3.5 релизы?), это было так. Это из-за порядка событий, который это не то, что MS может пойти переключение без причинения тысяч разработчиков, чтобы развлечься выключенный.

Проблема действительно сводится к факт, что в отличие от данных других элементов управления properties, свойство Checked объекта переключатель на самом деле не меняется пока фокус не покинет переключатель. И, как и все элементы управления WinForms, фокус на самом деле не покидает радио кнопку до тех пор, пока фокус не будет передан другой контроль, и на самом деле не раньше после события Click нового сфокусированный контроль выстрелил. Результат об этом, что касается радио кнопки, это то, что если вы попытаетесь привязать к их, связанные свойства в вашем источник данных на самом деле будет отставать от вашего визуальное состояние радиокнопок на единицу щелкните .Если у вас всего два радио кнопки, источник данных будет прямо напротив видимого состояния, пока вы не нажмете где-нибудь еще, что не запускает действие, которое ссылается на эти источники данных характеристики. Что может сделать это действительно раздражающая ошибка, которую нужно выследить. Мне почти показалось, что у меня галлюцинации.

Теперь, честно говоря, можно сделай так, чтоб это работало. Но это самый глупый Клудж, который когда-либо скрывался. Хорошо, может быть это не так уж плохо ... но это грязно взломать точно. Требуется много работы за то, что действительно должно уже доступны. Насколько я могу Скажите, единственный способ решить эту проблему проблема, не отказываясь от механизм привязки данных должен по сути, сделайте свой собственный RadioButton контроль, с изменением свойства и порядок событий, который действительно полезен. Вы можете написать его с нуля, или подкласс RadioButton и переопределить вся логика событий с кастомной обработка сообщений.

6
ответ дан 18 December 2019 в 09:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: