多数のアイテムを含むステータス ストリップがあります。それらの 1 つはToolStripStatusLabel
withSpring = True
です。ラベルのテキストが長すぎると、ラベルが見えなくなります。
ステータスストリップを高くして、テキスト全体を複数行で表示することはできますか?
多数のアイテムを含むステータス ストリップがあります。それらの 1 つはToolStripStatusLabel
withSpring = True
です。ラベルのテキストが長すぎると、ラベルが見えなくなります。
ステータスストリップを高くして、テキスト全体を複数行で表示することはできますか?
これは興味深い問題です....いくつかのことを試しましたが、成功しませんでした...基本的に、ToolStripStatusLabel の機能は非常に限られています。
私はあなたが望む結果をもたらすハックを試みましたが、もちろんこれが絶対に必要でない限り、これをお勧めするかどうかさえわかりません...
これが私が持っているものです...
StatusStrip のプロパティで AutoSize = false を設定します。これにより、複数の行に対応するように StatusStrip のサイズを変更できます。toolStripStatusLabel1 というラベルを含む ststusStrip1 という statusStrip を想定しています。
フォーム レベルで、TextBox 型の変数を宣言します。
TextBox txtDummy = new TextBox();
Form Load で、いくつかのプロパティを設定します。
txtDummy.Multiline = true;
txtDummy.WordWrap = true;
txtDummy.Font = toolStripStatusLabel1.Font;//Same font as Label
toolStripStatusLabel1 のペイント イベントを処理します。
private void toolStripStatusLabel1_Paint(object sender, PaintEventArgs e)
{
String textToPaint = toolStripStatusLabel1.Tag.ToString(); //We take the string to print from Tag
SizeF stringSize = e.Graphics.MeasureString(textToPaint, toolStripStatusLabel1.Font);
if (stringSize.Width > toolStripStatusLabel1.Width)//If the size is large we need to find out how many lines it will take
{
//We use a textBox to find out the number of lines this text should be broken into
txtDummy.Width = toolStripStatusLabel1.Width - 10;
txtDummy.Text = textToPaint;
int linesRequired = txtDummy.GetLineFromCharIndex(textToPaint.Length - 1) + 1;
statusStrip1.Height =((int)stringSize.Height * linesRequired) + 5;
toolStripStatusLabel1.Text = "";
e.Graphics.DrawString(textToPaint, toolStripStatusLabel1.Font, new SolidBrush( toolStripStatusLabel1.ForeColor), new RectangleF( new PointF(0, 0), new SizeF(toolStripStatusLabel1.Width, toolStripStatusLabel1.Height)));
}
else
{
toolStripStatusLabel1.Text = textToPaint;
}
}
IMP: ラベルのテキスト プロパティを割り当てないでください。代わりに、タグから使用するタグに入れます。
toolStripStatusLabel1.Tag = "My very long String";