Laden...

Datagridview Zeile mit Browse Button - Button nur für eine Spalte

Erstellt von Siedlerchr vor 12 Jahren Letzter Beitrag vor 12 Jahren 1.030 Views
S
Siedlerchr Themenstarter:in
178 Beiträge seit 2009
vor 12 Jahren
Datagridview Zeile mit Browse Button - Button nur für eine Spalte

Hallo zusammen,

ich habe folgendes praktisches gefunden:
DataGridView-Zelle mit Browse-Button
Dort wird in einer Zelle ein Browse Button hinzugefügt.
Die relevante Stelle ist die hier:

 void dgv_EditingControlShowing(object sender,DataGridViewEditingControlShowingEventArgs e)
    {
      if (dgv.CurrentCell.ColumnIndex != dt.LinkColumn.Ordinal) return;
      Button btn = new Button(); btn.Dock = DockStyle.Right;
      btn.Name = "btnOpen"; btn.Text = "..."; btn.Width = 25;
      if (!dgv.EditingPanel.Controls.ContainsKey(btn.Name))
        dgv.EditingPanel.Controls.Add(btn);
      btn.Click += new EventHandler(btn_Click);
      btn.BringToFront();
    }

Das funktioniert soweit
Allerdings wird mir dieser "Browse Button" für jede Spalte angzeigt, obwohl nicht beabsichtigt.

Ich habe das auch schon mit anderen Events wie CellEnter oder CellClick getestet und dort die Spalte abgefragt, aber er fügt es trotzdem für jede Spalte ein.
Besteht die Chance, das man das hinbekommt, dass das nur bei 1 Spalte angezeigt wird?

49.485 Beiträge seit 2005
vor 12 Jahren

Hallo Siedlerchr,

meine Vermutung ins Blaue ist, dass du den Button eher e.Control oder vielleicht dgv.EditingControl hinzufügen musst, aber nicht dgv.EditingPanel.

herbivore

S
Siedlerchr Themenstarter:in
178 Beiträge seit 2009
vor 12 Jahren

Hi,

ich habe da mal mit deinen Vorschlägen rumgetestet, funktioniert so leider nicht.
Zum einen werden da wieder für alle die Buttons angezeigt und zum Anderen wird der Button jeweils nur so halb angezeigt.

Ich habe mir jetzt nen Workaround geschaffen:


   if  (dgvProjectInfo.CurrentCell.OwningColumn == dgvProjectInfo.Columns["ProjectInfoProjectCode"])
            {
                ShowProjectCodesWithButton(dgvProjectInfo);
            }
            else
            {
dgvProjectInfo.EditingPanel.Controls.RemoveByKey("btnProjectCodes");
 
            }


So entferne ich einfach den Button bei den Spalten bei denen ich den nicht benötige, bei der anderen Spalte erzeuge ich ihn dann neu.