Autor Beitrag
yndaso
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 108



BeitragVerfasst: Mo 11.05.09 06:43 
Hallo zusammen,

mein DatagridView besteht aus 3 Spalten. Spalte 1 und 2 ist ReadOnly=true. In der Spalte 3 sollen
Werte eingegeben werden.

Wie schaffe ich es nun, den Fokus auf die 3. Spalte zu setzen, damit dort sofort Werte eingegeben werden
können. Also Zeile markieren und direkt eintippen, ohne vorher mit TAB auf die Zelle zu navigieren. Ich
kriege zwar hiermit die richtige Spalte markiert, kann aber trotzdem nicht direkt die Werte eingeben:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
        private void dataGridView1_SelectionChanged(object sender, EventArgs e)
        {
            if (dataGridView1.Rows[0].Cells[0].Selected || dataGridView1.Rows[0].Cells[1].Selected)
            { dataGridView1.ClearSelection();
               dataGridView1.Rows[0].Cells[2].Selected = true;
            }
        }

Abgesehen davon, dass es nicht funktioniert, finde ich den Code doof, weil ich für jede Zeile so eine If Abfrage bräuchte...
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Mo 11.05.09 08:36 
Hallo,

versuch es einmal unter Verwendung von:
ausblenden C#-Quelltext
1:
dataGridView1.CurrentCell = dataGridView1.CurrentRow.Cells[2];					

Bitte beachte, dass SelectionChanged durch eine solche Änderung neu aufgerufen wird; das passt also höchstwahrscheinlich ganz und gar nicht. "Richtig" dürfte das RowEnter-Ereignis sein; dort bekommst du auch e.RowIndex und kannst die gewünschte Zelle direkt festlegen:
ausblenden C#-Quelltext
1:
2:
3:
4:
private void dataGridView1_RowEnter(object sender, DataGridViewCellEventArgs e)
{
    dataGridView1.CurrentCell = dataGridView1.Rows[e.RowIndex].Cells[2];
}

Gruß Jürgen
yndaso Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 108



BeitragVerfasst: Mo 11.05.09 08:57 
Hallo,

habe deinen Vorschlag integriert
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
        private void dataGridView1_RowEnter(object sender, DataGridViewCellEventArgs e)
        {
            if (dataGridView1.CurrentCell != null && dataGridView1.CurrentCell != dataGridView1.Rows[e.RowIndex].Cells[2])
            {
                dataGridView1.CurrentCell = dataGridView1.Rows[e.RowIndex].Cells[2];
            }
        }


Nun bekomme ich aber folgende Exception:

System.InvalidOperationException wurde nicht behandelt.
Message="Der Vorgang ist ungültig, da er einen Wiedereintrittsaufruf an die SetCurrentCellAddressCore-Funktion zur Folge hat."
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Mo 11.05.09 09:12 
Oh, das wundert mich. Ich hätte erwartet, dass RowEnter nicht erneut ausgelöst wird.

Dann versuche dies (unter Einbeziehung deines ersten Versuchs):
ausblenden C#-Quelltext
1:
2:
3:
4:
private void dataGridView1_RowEnter(object sender, DataGridViewCellEventArgs e)
{
    dataGridView1.Rows[e.RowIndex].Cells[2].Selected = true;
}

Jürgen
yndaso Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 108



BeitragVerfasst: Mo 11.05.09 09:22 
Hier tritt wieder mein Problem auf.
Wenn ich nun auf die erste Zelle klicke, wird die 3. Zelle zwar markiert, nur
ist diese nicht aktiv.
d.h.:
Ich klick auf Zelle1 -> Zelle3 wird nun markiert .
Nun versuche ich etwas einzugegeben -> geht nicht.

Erst wenn ich wirklich die 3. Zelle anklicke kann ich dort auch Werte eintippen.
yndaso Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 108



BeitragVerfasst: Mo 11.05.09 09:28 
Hier tritt wieder mein Problem auf.
Wenn ich nun auf die erste Zelle klicke, wird die 3. Zelle zwar markiert, nur
ist diese nicht aktiv.
d.h.:
Ich klick auf Zelle1 -> Zelle3 wird nun markiert .
Nun versuche ich etwas einzugegeben -> geht nicht.

Erst wenn ich wirklich die 3. Zelle anklicke kann ich dort auch Werte eintippen.