2016-07-22 7 views
1

Ich versuche, einen Button zu verwenden, um den Dateinamen und den Pfad in die DataGridView-Zelle zu laden. lege ich den Knopf auf einer Zelle wie folgt aus:Schaltfläche erhält keinen Mausklick, wenn sie über DataGridView platziert wird

var cellRectangle = dataGridView.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, false); 
int buttonX = dataGridView.Location.X + cellRectangle.Location.X + cellRectangle.Width - btnLoadFile.Width; 
int buttonY = dataGridView.Location.Y + cellRectangle.Location.Y; 

btnLoadFile.Location = new Point(buttonX + 20, buttonY); 
btnLoadFile.Height = cellRectangle.Height - 2; 
btnLoadFile.Visible = true; 
btnLoadFile.BringToFront(); 

ich den Benutzer möchte den Knopf klicken, wählen Sie Datei in File-Dialog usw. Das Problem ist die Schaltfläche nicht angeklickt bekommt. Die Rasterzelle empfängt stattdessen die Klicks.

Hat jemand eine Idee, warum es passiert und wie kann ich damit umgehen?

+0

machen Sie die Schaltfläche als Kind von DataGrid anzeigen sonst die Tasten umleiten klicken Sie auf Ereignis –

+0

@Uthistran: gerade versucht es. Die Taste reagiert immer noch nicht auf Klicks. – DmitryRibak

+0

Das klingt falsch. Sie haben es wahrscheinlich einfach nicht richtig eingeklinkt. Wenn Sie es sehen und anklicken können, ruft __will__ sein Klick-Ereignis auf. Was passiert beim Doppelklick im Designer? – TaW

Antwort

0

Try this ...

dataGridView.Controls.SetChildIndex(btnLoadFile, 0); 
// Bring it to the front 
btnLoadFile.BringToFront(); 

Vielleicht brauchen Sie nicht die letzte Zeile ...

+0

Leider hat sich nichts geändert ... Gleiches Verhalten wie vorher – DmitryRibak

0

würde ich DataGridViewButtonColumn verwenden, anstatt einen Knopf über dem Gitter des Zeichnens. Das gibt Ihnen eine Schaltfläche in jeder Zeile.

https://msdn.microsoft.com/de-de/library/system.windows.forms.datagridviewbuttoncolumn(v=vs.110).aspx

Wenn Sie die Taste in einer anderen Zelle haben wollen, die beispielsweise E-Mails angezeigt wird, können Sie den gewünschten editcell Typen ableiten und eine Kombination von TextBox und Button implementieren und die Taste machen nur dann sichtbar, wenn in editmode. Schauen Sie hier https://msdn.microsoft.com/de-de/library/7tas5c80(v=vs.100).aspx für weitere Informationen. Ich würde dir einen Code schicken, aber leider habe ich nur eigene Zellen/Editcontrols für verschiedene Zwecke erstellt.

+0

Ja, ich weiß über diese Option Bescheid, aber nur um einen Knopf auf das Formular zu werfen und es auf eine Zelle zu legen, schien viel einfacher zu sein. Auch möchte ich nicht die ganze Spalte mit Knöpfen gefüllt, es ist nicht informativ für den Benutzer nur Unordnung – DmitryRibak

Verwandte Themen