Code Auszug!
Hallo zusammen,
ich wollte euch ja nicht mit Code zuwerfen, aber hier der mE relevante Auszug.
changeView() setzt die Form nach Änderungen zurück. Insbesondere wird eine comboBox auf die erste Spalte der aktiven Zeile gelegt.
Der Code läuft so komplett durch und alle eingefügten Zeilen (insertCopiedLines(…) der Parameter enstcheidet nur, ob vor oder hinter der aktiven Zeile eingefügt werden soll) werden auch angezeigt. Sobald ich in eine der neuen Zellen clicke folgt die indexOutOfRange Meldung. Beantworte ich die mit Nein läuft alles wie geschmiert weiter.
private void changeView()
{
DataRow currentChild;
if (bindingManager.Position != -1)
{
DataRow dr = ((System.Data.DataRowView)bindingManager.Current).Row;
string id = dr["id"].ToString();
currentChild = xmlTable.Rows.Find(id);
if (currentChild != null)
{
firstContent.Text = currentChild["content"].ToString();
type.Text = currentChild["type"].ToString();
}
}
Rectangle rec = new Rectangle();
//lov auf das Grid legen!
type.Visible = true;
if (xmlGrid.CurrentRowIndex != -1)
{
rec = xmlGrid.GetCellBounds(xmlGrid.CurrentRowIndex, 1);
type.Left = rec.Left + xmlGrid.Left;
type.Top = rec.Top + xmlGrid.Top;
type.Height = rec.Height;
type.Width = rec.Width;
type.BringToFront();
if (
type.Top xmlGrid.Left + xmlGrid.Width - type.Width - 12
|| type.Left xmlGrid.Top + xmlGrid.Height - type.Height + 2
)
type.Visible = false;
}
else
type.Visible = false;
xmlGrid.Refresh();
}
private void insertCopiedLines(bool afterThisLine)
{
int n = xmlGrid.CurrentRowIndex;
xmlTable.AcceptChanges();
if (afterThisLine)
n = n + 1;
if (n != -1)
{
for (int i = 0; i n; i--)
{
for (int j = 1; j
Vielen Dank für alle Ideen!
biba
Dirk.Pegasus