Autor Beitrag
Raorkon
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 86
Erhaltene Danke: 1



BeitragVerfasst: Mi 12.01.11 10:32 
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:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
            // 
            // dataGrid1
            // 
            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(00);
            this.dataGrid1.Name = "dataGrid1";
            this.dataGrid1.Size = new System.Drawing.Size(13281);
            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"))));


ausblenden 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(030);
            this.pnlDeliveryOrder.Controls.Add(this.pictureBox1);
            this.pnlDeliveryOrder.Controls.Add(this.dataGrid1);
            this.pnlDeliveryOrder.Location = new System.Drawing.Point(5167);
            this.pnlDeliveryOrder.Name = "pnlDeliveryOrder";
            this.pnlDeliveryOrder.Size = new System.Drawing.Size(13281);
            this.pnlDeliveryOrder.Visible = false;


wenn ich nun zum panel

Autoscrollmargin wird aber nicht beachtet.

Wo habe ich meinen Denkfehler??
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 86
Erhaltene Danke: 1



BeitragVerfasst: 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
ausblenden C#-Quelltext
1:
protected ScrollBar VertScrollBar { get; }					
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: 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.
ausblenden C#-Quelltext
1:
VertScrollBar.Size = new Size(100, VertScrollBar.Height);					

Aber wie schon geschrieben, mußt du dafür von DataGrid ableiten:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
class MyDataGrid : DataGrid
{
   public MyDataGrid()
   {
     // hier kannst du nun die Größe der ScrollBar ändern (s.o.)
   }
}

Und dann MyDataGrid in deiner Form verwenden (bzw. einen besseren Namen ;-)