diablo22 Ответов: 2

Vb.net флажок установлен/снят


Здравствуйте, у меня есть вопрос, Может ли кто-нибудь мне помочь.

У меня есть 1 флажок с именем "enablelogs"
И я хочу сделать лог-файл, когда есть измененная опция, чтобы сохранить его в файл.
И вот в чем моя проблема.
Когда форма открывается и флажок уже установлен , то когда я нажимаю кнопку СОХРАНИТЬ, чтобы сохранить информацию в файл, чтобы пропустить ее, потому что она уже проверена.

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

Вот мой код:
Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click
        If enableLogs.Checked = True Then
        Logger.log("[Admin Name: " & lblGetName.Text & "]" & " Changed Option" & " " & "Enable Logs")
        Else
        Logger.log("[Admin Name: " & lblGetName.Text & "]" & " Changed Option" & " " & "Disable Logs")
        End If


и вот что он сохраняет каждый раз в файле:
[10:21:56][Admin Name: admin] Changed Option Enable Logs


Как это сделать, если каждый раз меняется на save, а не дублировать информацию в save.
Например если флажок уже установлен при загрузке формы а затем я нажимаю кнопку Не отображать меня в журнале это:
[10:21:56][Admin Name: admin] Changed Option Enable Logs


Любые идеи я буду признателен

Что я уже пробовал:

я попробовал с помощью кнопки сделать сейвы а также в
enableLogs_CheckedChanged

Результаты те же самые

2 Ответов

Рейтинг:
2

diablo22

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

я не могу сделать эти шаги:
1) Если форма загружается и флажок уже установлен - ничего не регистрируйте
2) Если форма загружается и флажок уже снят - ничего не регистрируйте

3)если флажок был установлен при загрузке формы и я переключаю его на unchecked - to log in file
4)если флажок был снят при загрузке формы и я переключаю его на checked - to log in file


RickZeeland

Пожалуйста, используйте кнопку "Задать вопрос или комментарий", чтобы ответить.
Я обновлю решение и надеюсь, что все будет немного более ясно для вас :)

diablo22

Ладно, спасибо, я не заметил, как это было, но спасибо за замечание, теперь буду знать наверняка.

Рейтинг:
1

RickZeeland

Используйте CheckedChanged Событие, см.: флажок.CheckedChanged Event (System.Окна.Формы) | Microsoft Docs[^]
Также смотрите пример здесь: Элемент управления checkbox в VB.NET[^]

В функции CheckedChanged вы можете использовать логическую переменную, установить ее в true, чтобы вы знали, что ведение журнала должно быть включено.

Чтобы определить, является ли это формой загрузки:

Public Class Form1

    Public skipCheckedChanged As Boolean

    Private Sub enableLogs_CheckedChanged(sender As Object, e As EventArgs) Handles enableLogs.CheckedChanged
        If skipCheckedChanged Then
            skipCheckedChanged = False
            Return
        End If

        ' Your code here
    End Sub

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        skipCheckedChanged = True
        enableLogs.Checked = True
    End Sub
End Class


diablo22

я стараюсь вот так:
Private Sub enableLogs_CheckedChanged(sender As Object, e As EventArgs) обрабатывает enableLogs.CheckedChanged
- Если это возможно.Тогда Checked = False
'Logger.log("[Admin Name: "& lblGetName.Текст и amp; "]" &ампер; "изменена опция" &ампер; "" &ампер; "отключить логи")
-Конец, Если
Если enableLogs.Состояния Checkstate = Состояния Checkstate.Тогда Проверено
Logger.log("[Admin Name: "& lblGetName.Текст и amp; "]" &ампер; "изменена опция" &ампер; "" &ампер; "включить журналы")
Ключевые слова elseif enableLogs.Состояния Checkstate = Состояния Checkstate.Тогда Не Проверено
Logger.log("[Admin Name: "& lblGetName.Текст и amp; "]" &ампер; "изменена опция" &ампер; "" &ампер; "отключить логи")
Еще
'
Конец, Если
Конец Подводной Лодки
и в моем журнале при загрузке формы он записывает информацию при загрузке формы
[10:03:24][имя администратора: admin] изменена опция включить журналы
есть идеи?

RickZeeland

Тогда, может быть, вы устанавливаете флажок где-то в инициализации ?

diablo22

в форме нагрузок у меня есть вот это:
Если Мои.Настройки.Журналы = Ложь Тогда
enableLogs.Проверено = Ложь
Еще
enableLogs.Проверено = Истина
Конец, Если

RickZeeland

Тогда, возможно, вам следует установить логическое значение, например skipCheckedChanged = True, чтобы пропустить событие CheckedChanged при запуске приложения.

diablo22

любой пример, потому что я не понимаю, как это должно быть?