Benutzer mit den meisten Antworten
Windows Formular an DataGridView anpassen

Frage
Antworten
-
Hallo A.,
ja, das war aber auch nicht Deine Original-Frage.
Du möchtest also jetzt "Die Breite des DGV an die darin enthaltenen Spalten (im AllCellsMode) anpassen" OK?
Dann zu diesen neuen Frage bespielsweise:using System; using System.Data; using System.Windows.Forms; using System.Drawing; namespace WinDgvBreite { public partial class Form1 : Form { DataGridView dgv = new DataGridView(); public Form1() { InitializeComponent(); this.Load +=Form1_Load; Controls.Add(dgv); } private void Form1_Load(object sender, EventArgs e) { DataTable dt = new DataTable("Daten"); dt.Columns.Add(new DataColumn("Name")); dt.Columns.Add(new DataColumn("Reich", typeof(bool))); dt.Columns.Add(new DataColumn("Neffen", typeof(int))); dt.Columns.Add(new DataColumn("Geburtsdatum", typeof(DateTime))); AddNewRow(dt, "Dagobert Duck", true, 1, new DateTime(1962, 10, 11)); AddNewRow(dt, "Donald Duck", false, 3, new DateTime(1973, 8, 12)); AddNewRow(dt, "Gustav Gans", false, 0, new DateTime(1973, 6, 13)); AddNewRow(dt, "Trick Duck", false, 0, new DateTime(1985, 4, 14)); dgv.DataSource = dt; dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells; dgv.Width = dgv.Columns.GetColumnsWidth(DataGridViewElementStates.Visible) + dgv.RowHeadersWidth; dgv.BorderStyle = BorderStyle.None; dgv.Height = dgv.Rows.GetRowsHeight(DataGridViewElementStates.Visible) + dgv.ColumnHeadersHeight; ClientSize = new Size(dgv.Width, dgv.Height); } private void AddNewRow(DataTable dt, string name, bool reich, int neffen, DateTime geburtsDatum) { DataRow dr = dt.NewRow(); dr[0] = name; dr[1] = reich; dr[2] = neffen; dr[3] = geburtsDatum; dt.Rows.Add(dr); } } }
- Als Antwort markiert ax123 Dienstag, 29. März 2011 09:30
Alle Antworten
-
Hallo A.,
vom Prinzip her sollte es funktionieren. Besser natürlich einzubeziehen, dass es ein ClientRectangle gibt:
using System; using System.Data; using System.Windows.Forms; using System.Drawing; namespace WinDgvEditEvent { public partial class Form1 : Form { DataGridView dgv = new DataGridView(); public Form1() { InitializeComponent(); dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells; dgv.Width = 500; // 1): ClientSize = new Size(dgv.Width, dgv.Height); // 2): oder // this.Width = dgv.Width + (Width - ClientRectangle.Width); // this.Height = dgv.Height + (Height - ClientRectangle.Height); Controls.Add(dgv); } private void Form1_Load(object sender, EventArgs e) { DataTable dt = new DataTable("Daten"); dt.Columns.Add(new DataColumn("Name")); dt.Columns.Add(new DataColumn("Reich", typeof(bool))); dt.Columns.Add(new DataColumn("Neffen", typeof(int))); dt.Columns.Add(new DataColumn("Geburtsdatum", typeof(DateTime))); AddNewRow(dt, "Dagobert Duck", true, 1, new DateTime(1962, 10, 11)); AddNewRow(dt, "Donald Duck", false, 3, new DateTime(1973, 8, 12)); AddNewRow(dt, "Gustav Gans", false, 0, new DateTime(1973, 6, 13)); AddNewRow(dt, "Trick Duck", false, 0, new DateTime(1985, 4, 14)); dgv.DataSource = dt; } private void AddNewRow(DataTable dt, string name, bool reich, int neffen, DateTime geburtsDatum) { DataRow dr = dt.NewRow(); dr[0] = name; dr[1] = reich; dr[2] = neffen; dr[3] = geburtsDatum; dt.Rows.Add(dr); } } }
-
Hallo Frank,
das Windows Form Control lässt sich so an das DGV anpassen.
Die Breite des DGV jedoch nicht an die darin enthaltenen Spalten, die ja autom. an den Zelleninhalte angepasst werden.
Bei drei Spalten liefert der folgende Code immer eine Gesamtbreite von 300 Pixeln, obwohl durch dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells die einzelnen Spalten eigentlich breiter sind.
int width = 0;
foreach (DataGridViewColumn column in dgv.Columns)
if (column.Visible == true)
width += column.Width;
dgv.Width = width;Wie bekomm ich die richtige Spaltenbreite?
Danke
Axel
-
Hallo A.,
ja, das war aber auch nicht Deine Original-Frage.
Du möchtest also jetzt "Die Breite des DGV an die darin enthaltenen Spalten (im AllCellsMode) anpassen" OK?
Dann zu diesen neuen Frage bespielsweise:using System; using System.Data; using System.Windows.Forms; using System.Drawing; namespace WinDgvBreite { public partial class Form1 : Form { DataGridView dgv = new DataGridView(); public Form1() { InitializeComponent(); this.Load +=Form1_Load; Controls.Add(dgv); } private void Form1_Load(object sender, EventArgs e) { DataTable dt = new DataTable("Daten"); dt.Columns.Add(new DataColumn("Name")); dt.Columns.Add(new DataColumn("Reich", typeof(bool))); dt.Columns.Add(new DataColumn("Neffen", typeof(int))); dt.Columns.Add(new DataColumn("Geburtsdatum", typeof(DateTime))); AddNewRow(dt, "Dagobert Duck", true, 1, new DateTime(1962, 10, 11)); AddNewRow(dt, "Donald Duck", false, 3, new DateTime(1973, 8, 12)); AddNewRow(dt, "Gustav Gans", false, 0, new DateTime(1973, 6, 13)); AddNewRow(dt, "Trick Duck", false, 0, new DateTime(1985, 4, 14)); dgv.DataSource = dt; dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells; dgv.Width = dgv.Columns.GetColumnsWidth(DataGridViewElementStates.Visible) + dgv.RowHeadersWidth; dgv.BorderStyle = BorderStyle.None; dgv.Height = dgv.Rows.GetRowsHeight(DataGridViewElementStates.Visible) + dgv.ColumnHeadersHeight; ClientSize = new Size(dgv.Width, dgv.Height); } private void AddNewRow(DataTable dt, string name, bool reich, int neffen, DateTime geburtsDatum) { DataRow dr = dt.NewRow(); dr[0] = name; dr[1] = reich; dr[2] = neffen; dr[3] = geburtsDatum; dt.Rows.Add(dr); } } }
- Als Antwort markiert ax123 Dienstag, 29. März 2011 09:30