12

2ToolStripStatusLabelの後にToolStripProgressBar. プログレスバーを常にステータスバーの右側に固定したいので、ウィンドウがサイズ変更/最大化されると、自動的に移動/再描画されます。

これは 1st (左揃え)ToolStripStatusLabelSpringプロパティを true に設定するのと同じくらい簡単だと思ったので、フォームのサイズが変更/拡大され、使用可能なスペースが増えると、1stToolStripStatusLabelがそのスペースを埋めて自動的にToolStripProgressBar右の方へ。

しかし、それは私が望むことをしないだけでなく、ToolStripStatusLabel実際には 1 番目が 2 番目と の両方を覆い、基本的にステータスバー全体を占めています。ToolStrip コントロールには、Anchor や MinSize さえありません。StatusLabelProgressBar

どうすればいいですか:

  1. StatusBar ToolStripProgressBar(StatusStrip) の右側に固定
  2. いくつかの固定サイズのアイテム (例:ToolStripStatusLabel2と) を、余分なスペースがある場合に大きくなるToolStripProgressBar可変サイズのアイテムと混ぜますか?ToolStripStatusLabel1

お時間をいただきありがとうございます。

~IM

4

4 に答える 4

17

簡単な解決策があります。偽の ToolStripStatusLabel を 1 つ作成し、.Text を空にして、.Spring = true; を設定します。

その後、ToolStripProgressBar を追加します。順序が最初にラベルで、次にプログレスバーであることを確認してください。

于 2011-03-17T04:24:57.940 に答える
5

最初に AutoSize を false に変更します

toolStripProgressBar.AutoSize = false;

次に、statusStrip のサイズ変更イベントをサブスクライブします。

statusStrip1.SizeChanged += statusStrip1_SizeChanged;

最後に、イベント ハンドラーでバーの幅を変更します。

private void statusStrip1_SizeChanged(object sender, EventArgs e)
{
   toolStripProgressBar.Width = statusStrip1.Width - 95;
}
于 2013-04-08T08:09:00.290 に答える
4

興味があるかもしれないすべての人のために..アンカープロパティは利用可能ですが、コードのみ(デザイナーではありません)...しかし、いずれの場合も機能しません.. Connectにバグを残し、メッセージ付きの汎用WillNotFixを取得しました彼らはそれを主要な改訂のためだけに検討することを示しているようです。

何らかの理由で、「Spring」プロパティは不安定なようです。私の超単純な例では機能していますが、カスタムペイントを行う他の例では(ただし、MDIPArentのChild Formsでは、後者にはht eStatusBarがあります)そうではない。そのような場合でも、簡単な回避策があります-MDIParentフォーム(ステータスバーがある)のReSizeイベントで、StatusLabelのサイズを変更して、幅の変更と同じプロパティで大きくするため、ProgressBarをプッシュしますStatusBarの右端に

于 2009-10-26T20:31:06.870 に答える