Hi Viktor,
hier mal eine Demo, wie man das lösen kann. Mit dem Kontext-Menü wird vor der angeklickten Zeile eine neue Zeile eingefügt:
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
public partial class Form28 : Form
{
public Form28() => InitializeComponent();
List<Form28Data> col = new List<Form28Data>();
DataGridView dgv = new DataGridView() { Dock = DockStyle.Fill };
ContextMenuStrip contextMenu = new ContextMenuStrip();
ToolStripMenuItem menuItem1 = new ToolStripMenuItem("Insert");
private void Form28_Load(object sender, EventArgs e)
{
LoadData();
dgv.DataSource = col;
contextMenu.Items.Add(menuItem1);
menuItem1.Click += menuItem1_Click;
dgv.ContextMenuStrip = contextMenu;
this.Controls.Add(dgv);
}
private void menuItem1_Click(object sender, EventArgs e)
{
Point pt1 = contextMenu.Bounds.Location;
Point pt2=dgv.PointToClient(new Point(pt1.X, pt1.Y));
int rowIndex = dgv.HitTest(pt2.X, pt2.Y).RowIndex;
col.Insert(rowIndex, new Form28Data() { ID = 0, Info = $"<neu>" });
dgv.DataSource = null;
dgv.DataSource = col;
}
private void LoadData()
{
for (int i = 1; i < 99; i++)
col.Add(new Form28Data() { ID = i, Info = $"Zeile {i}" });
}
}
public class Form28Data
{
public int ID { get; set; }
public string Info { get; set; }
}
}
--
Viele Grüsse
Peter Fleischer (ehem. MVP)
Meine Homepage mit Tipps und Tricks