vb.net Снятый флажок в datagridview программно

#vb.net

#vb.net

Вопрос:

У меня есть код здесь, но он не работает. То, что я пытаюсь сделать, это когда появилось окно сообщения и спросить, хочу ли я продолжить, и выбрать «нет», тогда выбранный флажок изменит значение на false.

 If e.ColumnIndex = 0 Then
        If e.RowIndex >= 0 And e.RowIndex <= Me.dgDispatchPosting.RowCount - 1 Then
            If Me.dgDispatchPosting.Item("Approve_Status", e.RowIndex).Value <> "No Action" Then
                If Me.dgDispatchPosting.Item("chkSelect", e.RowIndex).Value = False Then
                    If MsgBox("This Dispatch Code has been " amp; vbCrLf amp; "Do you want to proceed? " amp; Me.dgDispatchPosting.Item("Approve_status", e.RowIndex).Value amp; "!", vbQuestion   vbYesNo, "Courier Dispatch Summary ") = MsgBoxResult.No Then
                        Me.dgDispatchPosting.Item("chkSelect", e.RowIndex).Value = False 'Must change the value here (Uncheck)
                    End If
                End If
            End If
        End If
    End If
  

Комментарии:

1. В строке перед окном сообщения вы проверяете, является ли chkSelect значение false. Затем вы отображаете окно сообщения, и если они нажимают «нет false «, вы снова устанавливаете его. Я подозреваю, что вы хотите изменить строку перед MsgBox, чтобы проверить, верно ли это? В противном случае коду нечего делать.

2. Код находится под _CellContentClick, строка перед окном сообщения проверяет, снят ли флажок щелкнул / выбран .. если выбранный флажок еще не установлен, появится окно сообщения, но если флажок уже установлен, появится окно сообщения .. Затем, когда я нажму НЕТ, флажок нажат / установленпревратится в false.

3. Ваш последний комментарий не имеет смысла. Вы говорите: «если выбранный флажок еще не установлен, появится окно сообщения», затем вы говорите: «если флажок уже установлен, появится окно сообщения» В соответствии с вашим кодом, единственный способ, которым окно сообщения будет всплывать, это значение chkSelect равно false . Затем вы устанавливаете его обратно в false, что является его текущим значением.

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

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

Ответ №1:

У меня есть ответ о том, как снять флажок datagridview . Я просто выбираю / фокусируюсь в другом столбце / строке после изменения значения флажка.

 If Me.dgDispatchPosting.Item("chkSelect", e.RowIndex).Value = True Then
   If MsgBox("This Dispatch Code has been " amp; Me.dgDispatchPosting.Item("Approve_status", e.RowIndex).Value amp; "!" amp; vbCrLf amp; "Do you want to proceed? ", vbQuestion   vbYesNo, "Courier Dispatch Summary ") = MsgBoxResult.No Then
      'Must change the value here (Uncheck)'Must change the value here(Uncheck)
      Me.dgDispatchPosting.Item("chkSelect", e.RowIndex).Value = False 
      'After Changing the value you must select/ focus in the other column or row to take effect the changes you made in code.
      Me.dgDispatchPosting.Item("Approve_status", e.RowIndex).Selected = True 
   End If
End If