Hallo zusammen,
ich kenn mich noch nicht sonderlich gut mit dem DGV aus,
habe es aber schonmal geschafft, Daten aus m Excel einzulesen. 😃
Mein aktuelles Problem ist, wenn ich auf eine Zeile/Zelle doppelklicke, soll ein Event gestartet werden
(Zeile löschen, davor aber Nutzer prüfen etc.)
Das Event startet aber nur, wenn ich direkt auf den Wert in der Zelle Klicke,
ich will aber, dass der "Klick" in der ganzen Zelle/Zeile funktioniert.
Hier ist der Anfang von meinem Code:
//dgv markierte Zeile löschen
private void dGvexcel_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
dgv_index_ausles = dGvexcel.CurrentCell.RowIndex;
dgv_wert_ausles = dGvexcel.CurrentCell.Value;
dgv_spaltzahl_ausles = dGvexcel.ColumnCount;
eingabe_kontrolle.set_check_admin(verbindung_zu_definitionen.getUsername());
//Daten aus dgv lesen ermitteln
for (dgv_spaltzahl_reell_ausles = dgv_spaltzahl_ausles - 1; dgv_spaltzahl_reell_ausles >= 0; dgv_spaltzahl_reell_ausles--)
{
if (dGvexcel.Columns[dgv_spaltzahl_reell_ausles].Name == "Projektleiter")
{
dgv_projektleiter_ausles = dGvexcel.Rows[dgv_index_ausles].Cells[dgv_spaltzahl_reell_ausles].Value;
}
....
Anbei noch ein Ausschnit von meinem DGV.
Danke im Voraus.
Gruß
Hallo Edzio,
das DataGridView unterstützt die Event Cell(Doucble)Click und CellContent(Double)Click. In deinem Beispiel wird das Event CellDoubleClick genutzt, welches die gesamte Zelle unterstützt. Warum in deinem Fall es sich wie CellContentDoubleClick verhält ist mir nicht klar.
Gibt es noch weiteres relevanten Code, den wir hier nicht sehen bisher?
Viele Grüße,
telfa
mh eigentlich nicht viel wildes, hab das Event mal im Anschluss gepostet.
Bei den Eigenschaften vom dgv habe ich alles auf Standard gelassen bis auf den Bereich "Verhalten"
(siehe Anhang).
Gruß
//dgv markierte Zeile löschen
private void dGvexcel_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
dgv_index_ausles = dGvexcel.CurrentCell.RowIndex;
dgv_wert_ausles = dGvexcel.CurrentCell.Value;
dgv_spaltzahl_ausles = dGvexcel.ColumnCount;
eingabe_kontrolle.set_check_admin(verbindung_zu_definitionen.getUsername());
//Daten aus dgv lesen ermitteln
for (dgv_spaltzahl_reell_ausles = dgv_spaltzahl_ausles - 1; dgv_spaltzahl_reell_ausles >= 0; dgv_spaltzahl_reell_ausles--)
{
if (dGvexcel.Columns[dgv_spaltzahl_reell_ausles].Name == "Projektleiter")
{
dgv_projektleiter_ausles = dGvexcel.Rows[dgv_index_ausles].Cells[dgv_spaltzahl_reell_ausles].Value;
}
if (dGvexcel.Columns[dgv_spaltzahl_reell_ausles].Name == "Konstrukteur")
{
dgv_konstrukteur_ausles = dGvexcel.Rows[dgv_index_ausles].Cells[dgv_spaltzahl_reell_ausles].Value;
}
if (dGvexcel.Columns[dgv_spaltzahl_reell_ausles].Name == "Projektnummer")
{
dgv_projektnummer_ausles = dGvexcel.Rows[dgv_index_ausles].Cells[dgv_spaltzahl_reell_ausles].Value;
}
}
//Benutzerfrage ob löschen oder nicht
DialogResult AbfrageDGV = MessageBox.Show("Wollen Sie das ausgewählte Projekt:\n" + dgv_projektnummer_ausles + "\nwirklich löschen?\n" + "Index: " + dgv_index_ausles + "\n" + "Wert: " + dgv_wert_ausles + "\n" + "Spalten: " + dgv_spaltzahl_ausles + "\n" + "PL: " + dgv_projektleiter_ausles, "Projekt löschen", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (AbfrageDGV == DialogResult.Yes)
{
if (verbindung_zu_definitionen.getUsername() == dgv_projektleiter_ausles.ToString() || eingabe_kontrolle.get_check_admin() == true)
{
//Abfrage ob bereits Konstrukteur drin steht.
if (dgv_konstrukteur_ausles != null)
{
MessageBox.Show("Sie können das Projekt nicht löschen,\nda es bereits in Arbeit ist!\n\n Bitte mit dem entsprechenden Entwickler klären!", "Löschen nicht möglich!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
return;
}
//Excellaufruf einbauen und Zeile suchen und löschen
MessageBox.Show("USER Passt\n" + "PL: " + dgv_projektleiter_ausles + "\nKonstr: " + dgv_konstrukteur_ausles + "\nProjekt: " + dgv_projektnummer_ausles, "Excel", MessageBoxButtons.OK, MessageBoxIcon.Information);
Microsoft.Office.Interop.Excel.Application dgv_projekt_loeschen_xlapp = new Microsoft.Office.Interop.Excel.Application();
dgv_projekt_loeschen_xlapp.Visible = false;
Workbook dgv_Projekt_loeschen_wb;
object missing = System.Reflection.Missing.Value;
try
{
zeile = 5;
string tmp_dgv_projektnummer_ausles = Convert.ToString(dgv_projektnummer_ausles);
System.Threading.Thread.Sleep(1000); //Kurze Wartetimer
dgv_Projekt_loeschen_wb = dgv_projekt_loeschen_xlapp.Workbooks.Open(
verbindung_zu_definitionen.getPfad(),
ExcelKonstanten.UpdateLinks.DontUpdate,
ExcelKonstanten.ReadWrite,
ExcelKonstanten.Format.Nothing,
"", // Passwort
"", // WriteResPasswort
ExcelKonstanten.IgnoreReadOnlyRecommended,
Microsoft.Office.Interop.Excel.XlPlatform.xlWindows,
"", // Trennzeichen
ExcelKonstanten.Editable,
ExcelKonstanten.Notify,
ExcelKonstanten.Converter.Default,
ExcelKonstanten.DontAddToMru,
ExcelKonstanten.Local,
ExcelKonstanten.CorruptLoad.NormalLoad
);
// Arbeitsblätter lesen
Sheets sheets = dgv_Projekt_loeschen_wb.Worksheets;
// ein Arbeitsblatt auswählen…
Worksheet dgv_Projekt_loeschen_ws = (Worksheet)sheets.get_Item("CM");
//Projektnummer suchen
do
{
zeile = zeile + 1;
} while (dgv_Projekt_loeschen_ws.Cells[zeile, 1].Value.ToString() != tmp_dgv_projektnummer_ausles);
//komplette Zeile löschen
dgv_projekt_loeschen_xlapp.Rows[zeile].Delete(); //löschen im Excel
dGvexcel.Rows.RemoveAt(dgv_index_ausles); //löschen im DGV
dgv_Projekt_loeschen_wb.Close(true, missing, false); //Workbook schließen & speichern
dgv_projekt_loeschen_xlapp.Quit(); //Excel beenden
System.Threading.Thread.Sleep(300); //Kurze Wartetimer
}
catch (Exception exc)
{
DialogResult AbfrageExcel = MessageBox.Show("Fehler beim Löschvorgang!\n\n" + exc + "\n\n" +
"(Sollte der Fehler häufiger vorkommen, wenden Sie sich an\n....)", "Löschen fehlgeschlagen!!",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
dgv_projekt_loeschen_xlapp.Quit(); //Excel beenden
}
}
else
{
MessageBox.Show("USER Passt nicht\n" + "PL: " + dgv_projektleiter_ausles + "\nKonstr: " + dgv_konstrukteur_ausles + "\nProjekt: " + dgv_projektnummer_ausles, "Excel", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
if (AbfrageDGV == DialogResult.No)
{
//keine Funktion
}
}//ENDE DGV ABfrag für löschen
Hallo Edzio,
innerhalb des Event wird da nichts zu finden sein. Das ausschlaggebende dafür ist ja außerhalb des Event. Schaue doch einmal welches Event du abonniert hast.
Viele Grüße,
telfa
also falls du damit meinst,
wenn man auf des DGV im Desginer doppelklickt,
hier erstellte mir das Visual ein
dGexcel_CellContentclick event,
das ich dann umgeändert habe und in der Form1.Designer.cs angepasst habe,
🤔
ok
habe gerade alles was das DGV betrifft gelöscht, und neu erstellt
nun geht es,
schätze durch mein manuelles ändern, habe ich eine Kleinigkeit übersehen...
Danke vielmals Telfa