CheckBox и изменение состояния

  1. в прошлом году

    Есть несколько элементов CheckBox. При обращении к любому хочу сбрасывать состояние нужных. И все работает, но. С первого клика по другим CheckBox выполняется код, но CheckBox визуально остается выключенным. Для визуального изменения (именно включения) нужно нажимать по два раза. Не пойму что не так.
    Сам код в CheckBox выполняется согласно включенной кнопке, но активной становится только со второго раза.

  2. А где код? Пришли код чтобы люди помогли.

    @8862.Александр Есть несколько элементов CheckBox. При обращении к любому хочу сбрасывать состояние нужных. И все работает, но. С первого клика по другим CheckBox выполняется код, но CheckBox визуально остается выключенным. Для визуального изменения (именно включения) нужно нажимать по два раза. Не пойму что не так.
    Сам код в CheckBox выполняется согласно включенной кнопке, но активной становится только со второго раза.

  3. Не вижу вложений. Ссылка для скачки https://yadi.sk/d/1yEQ3rabtLZLa
    Можно поиграться с 01, снять выделение и активировать внизу что-то для выбора.

  4. @8862.Александр Не вижу вложений. Ссылка для скачки https://yadi.sk/d/1yEQ3rabtLZLa
    Можно поиграться с 01, снять выделение и активировать внизу что-то для выбора.

    Непонятно, зачем пишете для каждого чекбокса:
    (this.Controls["NotAll"] as CheckBox).Checked;
    можно ведь обратиться по имени просто:
    NotAll.Checked;
    тем более первый вариант гораздо ресурсозатратен - идет перебор коллекции, потом с помощью рефлексии в ней ищется элемент с заданным именем, потом только выполняется действие...
    Дальше, непонятно зачем писать: if (A.Checked == true) A.Checked = false;
    Во-первых, смысл булевой переменной в том, что она и есть уже результат сравнения, т.е. в таких случаях пишут: if (A.Checked) ...
    Во-вторых, если вам просто надо снять галочки, зачем проверять установлена ли она?
    Пишите просто без if: A.Checked = true;
    Непонятно, какой вообще смысл от того, что нижние элементы - чекбоксы??? Почему не сделать их просто кнопками?

  5. в прошлом году исправил 459 Сергей

    вот исправил, но код остался тот же. слишком много проверок и есть не нужные методы. Если честно с таким кодом мозг убежит) https://yadi.sk/d/vB17a1rLtLjtY
    можно было сделать проще, но ночью не буду разбираться, если время будет напишу простой код как все это можно сделать

    @8862.Александр Не вижу вложений. Ссылка для скачки https://yadi.sk/d/1yEQ3rabtLZLa
    Можно поиграться с 01, снять выделение и активировать внизу что-то для выбора.

  6. Код пока использую какой нашел в образцах. Там есть лишнее в коде по переключателям, но без него у меня не срабатывали с первого раза переключатели. Что код затратный я заметил во время зацикливания (я это сумел) или выполнения несколько раз по кругу.
    Без проверки не установленная ли галка не работал ни один переключатель с первого нажатия. А я пойму почему не работает без этих усложнений. Почему так работает, так нет. Ну и я только учусь, привычки того немногим, чем пользовался тоже накладываются.
    кнопки мне кажется не настолько удобны будут. Хотя тот же чек бокс можно и представить в виде кнопки, но мне не понравилось, так как-то интуитивней и привычней.
    Буду смотреть исправленный код :)

  7. в прошлом году исправил 8862.Александр

    Разблочил снятие всех внизу (вызов edit) при работе с чекбксом 01. Не работает тогда групповой выбор в низу с первого раза.
    В чем причина такого поведения?

  8. Похоже логику нужно будет переделывать кардинально. Бум. думать.

  9. @8862.Александр Похоже логику нужно будет переделывать кардинально. Бум. думать.

    Есть легкий способ просто в инете посмотри, и все увидишь, все с этого начинали)))

  10. В инете уже давно смотрю. Может чуть не туда, но пока пусто :(

  11. в прошлом году исправил 459 Сергей

    @8862.Александр В инете уже давно смотрю. Может чуть не туда, но пока пусто :(

     
    private void All()
    {
         string rn = "rn";
         foreach ( Control control in this.Controls )
                {
                    CheckBox checkb = ( CheckBox ) control;
                    if ( rn == checkb.Name.Substring( 0, 2 ).ToString() )
                    {
                        checkb.Checked = true;
                        
                    }
                }
     }    
            
 

или зарегистрируйтесь чтобы комментировать!