Autor Beitrag
Steven85
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Do 16.07.15 09:01 
Moin zusammen,

mich nervt ein wahrscheinlich wirklich simples Problem. Ich versuche es mal ebenfalls simpel zu erklären.

Ich habe ein DataGridView mit einer gefüllten DataSource und der Formatierung AllCells für den AutoSizeColumnsMode. Alles kein Problem, außer das mich stört das die letzte Spalte nicht immer automatisch die komplette breite füllt und somit eine Lücke bleibt.

Also mache ich:

ausblenden Quelltext
1:
dgv.Columns[Fields[Fields.Count - 1]].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;					


Hier habe ich aber das Problem das die letzte Spalte, wenn die Spalten die komplette breite füllen, nicht ganz angezeigt wird und auch die Scrollbar zu spät aktiv wird.

Ich hoffe ihr könnt mir helfen. Danke im Voraus.
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Do 16.07.15 09:28 
Zitat:
Hier habe ich aber das Problem das die letzte Spalte, wenn die Spalten die komplette breite füllen, nicht ganz angezeigt wird und auch die Scrollbar zu spät aktiv wird.


Häh?

Ich habe es mal schnell ausprobiert und was ich sehe ist erwartungskonform und sehe auch kein Problem mit der Scrollbar. Was erwartest du hier genau?

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
private void button1_Click(object sender, EventArgs e)
{
    dataGridView1.DataSource = new DirectoryInfo(@"D:\").GetFiles();
    dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
    dataGridView1.Columns[dataGridView1.ColumnCount - 1].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
}
Steven85 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Do 16.07.15 09:34 
In der Screenshot siehst du das beim verkleinern des Fensters die letzte Spalte nicht korrekt dargestellt wird.
Und es ist egal wie viele Spalten das DGV hat.
Einloggen, um Attachments anzusehen!
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Do 16.07.15 09:54 
Ok das passiert wenn man die letzte Spalte auf Fill setzt wenn die Spalte schon gar nicht mehr in den sichtbaren Bereich passt.
Aka die anderen Spalten sind zusammen 1000px breit das Grid ist aber nur 800px breit und nun möchtest du das die letzte Spalte den (nicht vorhanden) Rest an Platz einnimt.
Ich habe gar keine Vorstellung was in diesem Fall überhaupt passieren sollte. Fill macht (meine Meinung) eigentlich nur in den Fällen Sinn wo man keine horizontale Scrollbar braucht.
Vielleicht beschreibst du mal genau welches Verhalten du dir wünscht. Dann kann man sich überlegen ob man da irgendwie in die Nähe kommt.

Edit:

Möglicherweise reicht es dir schon wenn du die minimale Breite der Spalte setzt. Z.B.
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
private void button1_Click(object sender, EventArgs e)
{
    dataGridView1.DataSource = new DirectoryInfo(@"D:\").GetFiles();
    dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
    dataGridView1.Columns[dataGridView1.ColumnCount - 1].MinimumWidth = dataGridView1.Columns[dataGridView1.ColumnCount - 1].GetPreferredWidth(DataGridViewAutoSizeColumnMode.AllCells, true);
    dataGridView1.Columns[dataGridView1.ColumnCount - 1].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
}


Zuletzt bearbeitet von Ralf Jansen am Do 16.07.15 11:54, insgesamt 1-mal bearbeitet

Für diesen Beitrag haben gedankt: Steven85
Steven85 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Do 16.07.15 11:51 
Das löst mein Problem schon vollständig und sauber. Vielen Dank.