Entwickler-Ecke
WinForms - Scrollbalken breiter machen
Raorkon - Mi 12.01.11 10:32
Titel: Scrollbalken breiter machen
Hallo zusammen,
ich weiß das es scheinbar recht banal ist, aber leider komm ich nicht weiter.
Ich habe eine Anwendung, bei der bei einem Timeevent ein Panel erscheint. In diesem Panel wird eine Tabelle in einem Datagrid angezeigt, sollte die Anzeigegröße nicht ausreichen kann man mit einem Scrollbalken arbeiten. Nun wird das ganze über ein Touchscreen bedient, und daher soll der Scrollbalken breiter werden dazu habe ich folgendes gemacht:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| this.dataGrid1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.dataGrid1.BackgroundColor = System.Drawing.Color.LightSteelBlue; this.dataGrid1.Font = new System.Drawing.Font("Arial", 12.5F, System.Drawing.FontStyle.Bold); this.dataGrid1.Location = new System.Drawing.Point(0, 0); this.dataGrid1.Name = "dataGrid1"; this.dataGrid1.Size = new System.Drawing.Size(132, 81); this.dataGrid1.TabIndex = 0; this.dataGrid1.DoubleClick += new System.EventHandler(this.dataGrid1_Click); this.dataGrid1.CurrentCellChanged += new System.EventHandler(this.dataGrid1_CurrentCellChanged); this.imageList1.Images.Clear(); this.imageList1.Images.Add(((System.Drawing.Image)(resources.GetObject("resource")))); |
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| this.pnlDeliveryOrder.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.pnlDeliveryOrder.AutoScroll = true; this.pnlDeliveryOrder.AutoScrollMargin = new System.Drawing.Size(0, 30); this.pnlDeliveryOrder.Controls.Add(this.pictureBox1); this.pnlDeliveryOrder.Controls.Add(this.dataGrid1); this.pnlDeliveryOrder.Location = new System.Drawing.Point(51, 67); this.pnlDeliveryOrder.Name = "pnlDeliveryOrder"; this.pnlDeliveryOrder.Size = new System.Drawing.Size(132, 81); this.pnlDeliveryOrder.Visible = false; |
wenn ich nun zum panel
Autoscrollmargin wird aber nicht beachtet.
Wo habe ich meinen Denkfehler??
Th69 - Mi 12.01.11 11:49
AutoScrollMargin stellt nicht die Größe der ScrollBar dar, sondern den Abstand (Rand) von einem enthaltenen Control (damit etwas Platz zwischen Control und dem Rand des ScrollContainers ist).
Verwendest du noch das alte DataGrid oder das neuere DataGridView?
Bei letzterem kannst du durch Ableiten auf die geschützte Eigenschaft 'DataGridView.VerticalScrollBar' zugreifen und die Größe anpassen.
Bei DataGrid (das ich selber noch nie verwendet habe) scheint es die analoge geschützte Eigenschaft 'DataGrid.VertScrollBar' zu geben.
Raorkon - Mi 12.01.11 12:08
aber msdn sagt zu AutoscrollMargin:
Ruft die Größe des AutoBildlaufrandes ab oder legt diese fest.
daher dachte ich das dies die richtige Methode ist
ich arbeite noch mit dem "alten" Datagrid, laut msdn ist die VertScrollBar nur get
C#-Quelltext
1:
| protected ScrollBar VertScrollBar { get; } |
Th69 - Mi 12.01.11 12:32
Ja, VertScrollBar kannst du nur lesen, aber die untergeordneten Eigenschaften (z.B. Size) kannst du selbstverständlich auch setzen, d.h.
C#-Quelltext
1:
| VertScrollBar.Size = new Size(100, VertScrollBar.Height); |
Aber wie schon geschrieben, mußt du dafür von DataGrid ableiten:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7:
| class MyDataGrid : DataGrid { public MyDataGrid() { } } |
Und dann MyDataGrid in deiner Form verwenden (bzw. einen besseren Namen ;-)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!