2009-01-14 3 views
11

Рассмотрите System.Windows.Forms.StatusStrip. Я добавил StatusStrip в мое приложение Windows Forms, но у меня есть несколько проблем.Использование StatusStrip в C#

Я хотел бы иметь метку, прикрепленную слева, и индикатор прогресса, закрепленный справа в StatusStrip, но я не могу найти способ установить эти свойства.

Я тогда подумал, что мне может понадобиться создать два StatusStrips и привязать их по обе стороны от нижней части формы ... Это не получилось; кроме того, он просто не чувствует себя хорошо.

ответ

27

Просто установите свойство Spring на элемент управления ярлыком на True, и вам должно быть хорошо идти.

+7

Если вы это сделаете, вы также захотите изменить выравнивание по умолчанию метки от MiddleCenter до LeftCenter. –

+0

Спасибо вам обоим ... отлично! – Brad

0

Вы пробовали Alignment свойство ProgresBarToolStripItem, установленное на Right?

+0

Выравнивание не будет работать в одиночку с макетом таблицы по умолчанию. –

+0

Да, я не сделал этого – Brad

7

Что вам нужно сделать, это установить свойство выравнивания вашего индикатора прогресса вправо. Затем установите LayoutStyle для StatusStrip в HorizontalStackWithOverflow.

private void InitializeComponent() 
    { 
     this.statusStrip1 = new System.Windows.Forms.StatusStrip(); 
     this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel(); 
     this.toolStripProgressBar1 = new System.Windows.Forms.ToolStripProgressBar(); 
     this.statusStrip1.SuspendLayout(); 
     this.SuspendLayout(); 
     // 
     // statusStrip1 
     // 
     this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { 
    this.toolStripStatusLabel1, 
    this.toolStripProgressBar1}); 
     this.statusStrip1.LayoutStyle = System.Windows.Forms.ToolStripLayoutStyle.HorizontalStackWithOverflow; 
     this.statusStrip1.Location = new System.Drawing.Point(0, 250); 
     this.statusStrip1.Name = "statusStrip1"; 
     this.statusStrip1.Size = new System.Drawing.Size(467, 22); 
     this.statusStrip1.TabIndex = 0; 
     this.statusStrip1.Text = "statusStrip1"; 
     // 
     // toolStripStatusLabel1 
     // 
     this.toolStripStatusLabel1.Name = "toolStripStatusLabel1"; 
     this.toolStripStatusLabel1.Size = new System.Drawing.Size(117, 17); 
     this.toolStripStatusLabel1.Text = "toolStripStatusLabel1"; 
     // 
     // toolStripProgressBar1 
     // 
     this.toolStripProgressBar1.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; 
     this.toolStripProgressBar1.Name = "toolStripProgressBar1"; 
     this.toolStripProgressBar1.Size = new System.Drawing.Size(100, 16); 

    } 

    private System.Windows.Forms.StatusStrip statusStrip1; 
    private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel1; 
    private System.Windows.Forms.ToolStripProgressBar toolStripProgressBar1; 
+0

Пожалуйста, боже, должен быть способ настроить это визуально. :) –

+0

Существует. Я показывал код дизайнера. Просто найдите свойства в панели свойств ... –

+1

На самом деле свойство 'Alignment' не доступно в сетке свойств класса' ToolStripStatusLabel' (по какой-то причине он имеет атрибут 'Browsable (false)', по крайней мере, в. NET 4). –

2

Это может быть достигнут с макетом таблицы по умолчанию для StatusStrip просто положить еще одну метки между текущей меткой и вашей ProgressBar и установить пружинное свойство верно.

+0

Комментарий о том, почему я был отмечен, был бы полезен. –

+0

Спасибо - это правильный ответ, если вы хотите больше одной выровненной справа метки. Не знаю, почему это было бы отмечено. –

0

Откройте конструктор и установите this.toolStripStatusLabel1.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right;

Смежные вопросы