2013-11-08 4 views
2

Я новый пользователь vb.net и вам нужно скрыть строку, когда пользователь щелкнет правой кнопкой мыши в контекстном меню и выберет скрыть. У меня есть googled это, но еще не найти способ сделать это.Скрыть строку в DataGridView

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

Dim value As Object = UserDataGridView.Rows(e.RowIndex).Cells(0).Value 

txtCustomerActive.Text = CType(value, String) 

Private Sub HideToolStripMenuItem_Click(ByVal sender As Object, ByVal e As EventArgs) Handles pnlContextMenuStrip1.ItemClicked 
     'Get the text of the item that was clicked on. 
     'Dim text As String = txtCustomerActive.Text 
     Try 

      'txtCustomerActive.Visible = False 
      pnlContextMenuStrip1.Visible = False 
      MessageBox.Show(txtCustomerActive.Text) 

     Catch ex As Exception 

      MessageBox.Show(ex.Message) 

     End Try 

    End Sub 
+0

Невозможно повлиять на видимость отдельной ячейки: http://stackoverflow.com/questions/6359952/make-cells-visible-datagridview-winforms-c-sharp – varocarbas

+0

@varocarbas Мне нужно скрыть всю строку. Спасибо – user1532468

+0

Вы должны быть более четкими в своем ответе, нет ссылки на строку; но различны для ячеек. (обновленная версия, чтобы избежать недоразумений :)) – varocarbas

ответ

6

Вы можете использовать Rows.Item(), чтобы скрыть определенный DataGridViewRow, как:

If (UserDataGridView.Rows.Count > 0) Then 
    For Each row As DataGridViewRow In UserDataGridView.SelectedRows 
     UserDataGridView.Rows.Item(row.Index).Visible = False 
    Next 
End If 

Я предполагаю, что вы используете FullRowSelect здесь.

Если вы не используете FullRowSelect вы могли бы иметь этот альтернативный код, который может поймать как Cell Выбравшись или Выбравшись:

If (UserDataGridView.SelectedRows.Count > 0) Then 
    For Each row As DataGridViewRow In UserDataGridView.SelectedRows 
     UserDataGridView.Rows.Item(row.Index).Visible = False 
    Next 
    ElseIf (UserDataGridView.SelectedCells.Count > 0) Then 
    For Each cell As DataGridViewTextBoxCell In UserDataGridView.SelectedCells 
     UserDataGridView.Rows.Item(cell.RowIndex).Visible = False 
    Next 
    End If 

Чтобы Unhide все скажем от Button Click вы могли бы это:

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click 
    For Each row As DataGridViewRow In UserDataGridView.Rows 
     If (row.Visible = False) Then 
      UserDataGridView.Rows.Item(row.Index).Visible = True 
     End If 
    Next 
End Sub 
+0

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

+1

Спасибо @varocarbas. Я обновил свой ответ. – Edper

+1

Я пробовал оба кода Edper и обе ошибки: Строка, связанная с позицией менеджера валюты, не может быть невидимой. – user1532468

0

Насколько я знаю, вы не можете сделать серверный обработчик для правой кнопки мыши (как вы это делали для HideToolStripMenuItem_Click, который работает как часть механизма .NET обратной передачи).

Однако, я считаю, что такая функция может быть выполнена с помощью некоторой javascript-клиентской стороны.

Надеюсь, это поможет!

+0

Ничего себе, актуально, вы можете =) http://stackoverflow.com/questions/1718389/right-click-context-menu-for-datagrid – Cheerkin

+1

Если вы что-то осознаете, просто обновите ваш ответ; не оставлять комментарии. Кроме того, было бы неплохо иметь более или менее хорошее знание конкретной проблемы перед ответом. По крайней мере, зная точную структуру: вы предполагаете, что OP относится к ASP, и все, что на его вопросе, похоже, указывает на другое (у вас даже нет элемента управления DataGridView в ASP). – varocarbas

Смежные вопросы