2016-04-04 4 views
1

Ich suche nach der besten Möglichkeit, eine Zeile eines DataGridView nach einer erfolgreichen Drag & Drop-Aktion zu deaktivieren. Also, ich habe bereits die Zeile fallen gelassen und markierte es als bewegte Hintergrundfarbe.Deaktivieren des Ziehens aus einer bestimmten Zeile einer DataGridView in C# und Winforms?

Jetzt Ich muss weiter deaktivieren Drag & Drop auf der gleichen Zeile. Ist das möglich, ohne die Reihe zu entfernen?

Ich kann eine gelöschte Datagridview Reihe de-select, aber ich kann es nicht als Marke nicht „ziehbar“:

dgvToolPosition.Rows[dgvToolPosition.SelectedRows[0].Index].Selected = false; 

Gibt es eine Möglichkeit, eine Eigenschaft der Reihe setzen das Einsetzen der Vermeidung entsprechenden Index auf einem List<DataGridViewRowCollection> von bereits fallen gelassenen Reihen?

+0

Die DoDragDrop-Methode nicht aufrufen? – LarsTech

+0

Ich frage mich, ob es eine Möglichkeit gibt, eine Zeile als nicht ziehbar zu markieren, sonst muss ich in einer Liste den Zeilenindex speichern, der bereits gelöscht wurde, um das mehrfache Löschen zu vermeiden. – sentenza

Antwort

1

Der beste Weg zur Vermeidung des Drag-Ereignisses auf eine Reihe zuvor gesunken ist für die einzigartige Eigenschaft der Zeile zu überprüfen dass ich mich auf eine erfolgreiche Drop-Operation (DefaultCellStyle.BackColor) gesetzt:

// Check if a row in the current selection has a gray background color, 
// so it can be skipped on Drag&Drop. 
       foreach(DataGridViewRow selectedRow in dgvToolPosition.SelectedRows) 
       { 
        if(selectedRow.DefaultCellStyle.BackColor == FCSCoreGlobal.ColorGray) 
         return; 
} 

ich weiß, es ist nicht der beste Weg, es zu tun, aber bis jetzt ist es der beste Trick, den ich gefunden habe. Ich bin immer noch auf der Suche nach einer AllowDrag -Eigenschaft auf einem DataGridViewRow auf false festgelegt.

0

Shot es die Dunkelheit, aber konnten Sie nicht einfach das Drop-Ereignis erfassen und prüfen, ob Sie es in die gleiche Zeile verschoben haben? Ich habe eine schnelle Google-Suche nach diesem Fall ist es das, was ich kam mit:

https://msdn.microsoft.com/en-us/library/system.windows.forms.dragdropeffects(v=vs.110).aspx

+0

Ich benutze bereits die 'DragDropEffects' auf' DragEnter' Event-Handler, aber dies geschieht ** nur nach einem RowStateChange ** auf der ursprünglichen DataGridView. – sentenza

Verwandte Themen