Använd vänsterpil och högerpil för att navigera

Eller Ctrl+P för att skriva ut till PDF (eller på papper)

Föreläsning 20

GUI:n och data

Olika sorters layout

Exempel på flöde

  1. FlowLayoutPanel panel = new FlowLayoutPanel {
  2. Dock = DockStyle.Fill
  3. };
  4. Controls.Add(panel);
  5. panel.Controls.Add(new Panel {
  6. Width = 100, Height = 100, BackColor = Color.Orange
  7. });
  8. panel.Controls.Add(new Panel {
  9. Width = 100, Height = 100, BackColor = Color.Green
  10. });
  11. panel.Controls.Add(new Panel {
  12. Width = 100, Height = 100, BackColor = Color.Pink
  13. });
  14. panel.Controls.Add(new Panel {
  15. Width = 100, Height = 100, BackColor = Color.Blue
  16. });

Varierande bredd

  1. FlowLayoutPanel panel = new FlowLayoutPanel {
  2. Dock = DockStyle.Fill
  3. };
  4. Controls.Add(panel);
  5. panel.Controls.Add(new Panel {
  6. Width = 100, Height = 100, BackColor = Color.Orange
  7. });
  8. panel.Controls.Add(new Panel {
  9. Width = 200, Height = 100, BackColor = Color.Green
  10. });
  11. panel.Controls.Add(new Panel {
  12. Width = 100, Height = 100, BackColor = Color.Pink
  13. });
  14. panel.Controls.Add(new Panel {
  15. Width = 100, Height = 100, BackColor = Color.Blue
  16. });

Vertikalt flöde

  1. FlowLayoutPanel panel = new FlowLayoutPanel {
  2. Dock = DockStyle.Fill,
  3. Direction = FlowDirection.TopDown
  4. };
  5. Controls.Add(panel);
  6. panel.Controls.Add(new Panel {
  7. Width = 100, Height = 100, BackColor = Color.Orange
  8. });
  9. panel.Controls.Add(new Panel {
  10. Width = 200, Height = 100, BackColor = Color.Green
  11. });
  12. panel.Controls.Add(new Panel {
  13. Width = 100, Height = 100, BackColor = Color.Pink
  14. });
  15. panel.Controls.Add(new Panel {
  16. Width = 100, Height = 100, BackColor = Color.Blue
  17. });

Tabeller inuti flöde

  1. FlowLayoutPanel flow = new FlowLayoutPanel {
  2. Dock = DockStyle.Fill
  3. };
  4. Controls.Add(flow);
  5. Person[] people = ...;
  6. foreach (Person p in people) {
  7. TableLayoutPanel table = new TableLayoutPanel {
  8. RowCount = 2,
  9. ColumnCount = 2,
  10. BackColor = Color.Orange
  11. };
  12. flow.Controls.Add(table);
  13. table.Controls.Add(new Label { Text = "Name" });
  14. table.Controls.Add(new Label { Text = p.Name });
  15. table.Controls.Add(new Label { Text = "Country" });
  16. table.Controls.Add(new Label { Text = p.Country });
  17. }

Pixelstorlek: Width och Height

  1. FlowLayoutPanel flow = new FlowLayoutPanel {
  2. Dock = DockStyle.Fill
  3. };
  4. Controls.Add(flow);
  5. Person[] people = ...;
  6. foreach (Person p in people) {
  7. TableLayoutPanel table = new TableLayoutPanel {
  8. RowCount = 2,
  9. ColumnCount = 2,
  10. BackColor = Color.Orange,
  11. Width = 200,
  12. Height = 200
  13. };
  14. flow.Controls.Add(table);
  15. table.Controls.Add(new Label { Text = "Name" });
  16. table.Controls.Add(new Label { Text = p.Name });
  17. table.Controls.Add(new Label { Text = "Country" });
  18. table.Controls.Add(new Label { Text = p.Country });
  19. }

AutoSize

  1. FlowLayoutPanel flow = new FlowLayoutPanel {
  2. Dock = DockStyle.Fill
  3. };
  4. Controls.Add(flow);
  5. Person[] people = ...;
  6. foreach (Person p in people) {
  7. TableLayoutPanel table = new TableLayoutPanel {
  8. RowCount = 2,
  9. ColumnCount = 2,
  10. BackColor = Color.Orange,
  11. AutoSize = true
  12. };
  13. flow.Controls.Add(table);
  14. table.Controls.Add(new Label { Text = "Name", AutoSize = true });
  15. table.Controls.Add(new Label { Text = p.Name, AutoSize = true });
  16. table.Controls.Add(new Label { Text = "Country", AutoSize = true });
  17. table.Controls.Add(new Label { Text = p.Country, AutoSize = true });
  18. }

DataGridView

Flexibelt och kompakt sätt att visa upp data i tabellformat

Rutnät

  1. DataGridView grid = new DataGridView {
  2. ColumnCount = 3,
  3. Dock = DockStyle.Fill
  4. };
  5. Controls.Add(grid);
  6. grid.Columns[0].Name = "Country";
  7. grid.Columns[1].Name = "Capital";
  8. grid.Columns[2].Name = "Leader";
  9. grid.Rows.Add(new string[] { "Sweden", "Stockholm", "Stefan" });
  10. grid.Rows.Add(new string[] { "USA", "Washington", "Donald" });
  11. grid.Rows.Add(new string[] { "Germany", "Berlin", "Angela" });

Rutnät som inte kan redigeras

  1. DataGridView grid = new DataGridView {
  2. ColumnCount = 3,
  3. Dock = DockStyle.Fill,
  4. AllowUserToAddRows = false,
  5. AllowUserToDeleteRows = false,
  6. ...
  7. };

Egna abstraktioner

  1. void MakeFlowAutoSize(FlowLayoutPanel flow)
  2. void MakeFlowFixedSize(FlowLayoutPanel flow, int width, int height)
  3. FlowLayoutPanel CreateImageGallery(Image[] images, int size)
  4. ...
  5. DataGridView CreateGrid(string[] columns, string[][] values)
  6. DataGridView CreateGrid(string[] columns, string[][] values, bool editable)
  7. void PopulateGrid(DataGridView grid, string[][] values)
  8. ...