Windowsフォームのラベルコントロールでテキストの一部を強調表示/選択することは可能ですか? RTFtextboxコントロールでその可能性を知っていますが、ラベルの多くのインスタンスを作成する必要があるため、そのコントロールを使用するのはやり過ぎです。
Windowsフォームラベルのテキストを選択することはできますか? -NO(少なくとも、Label.Paintメソッドをオーバーライドせずに簡単な方法はありません)
この目的でTextBoxを簡単に変更できます。
TextBox1.Text = "Hello, Select Me";
TextBox1.ReadOnly = true;
TextBox1.BorderStyle = 0;
TextBox1.BackColor = this.BackColor;
TextBox1.TabStop = false;
信じられない?ここにあなたのための例があります。
Bala R回答:
「BorderStyleがNoneに設定され、Readonlyがtrueに設定され、Backcolorがコンテナのそれに一致するようにTextBoxを使用します。」.
テキスト文字列が非常に長く、Width
のTextBox
だけではすべてのテキストを表示できない場合は、Width
のTextBox
プロパティを設定して表示できます。それはすべてテキストです。
Width
の正しい番号を知る必要がある場合は、MeasureString
のGraphics
メソッドを使用できます。インスタンスは、Control
(この場合はTextBox
)のCreateGraphics()
メソッドから取得できます。
最初のパラメーターはTextBoxのテキストで、2番目のパラメーターはTextBoxのフォントです。この関数は、SizeF
構造体を返します。必要なのはWidthプロパティのみで、_(int)size.Width
_または_(int)Math.Round(size.Width)
_で整数に変換します。
後でグラフィックインスタンスのDispose()
メソッドを呼び出すことを忘れないでください。もう必要ないからです。
このすべてのプロセスを実行する独自の関数を作成できます。
_static void SetText(TextBox textBox, string str)
{
Graphics graphics = textBox.CreateGraphics();
SizeF size = graphics.MeasureString(str, textBox.Font);
graphics.Dispose();
textBox.Width = (int)Math.Round(size.Width);
textBox.Text = str;
}
_
いいえ、Windowsフォームラベルのテキストを選択することはできません。その代わりに、読み取り専用のテキストボックスを使用できます。
TextBox
をBorderStyle
に設定し、None
をReadonly
に設定し、Backcolorをコンテナのそれに一致させるtrue
を使用します。
ラベルをダブルクリックすると、テキストがクリップボードにコピーされます。これは、Windowsフォームラベルのデフォルトの動作です。
ラベル上のテキストの一部を強調表示することはできません。ただし、これらのラベルのテキストが静的な場合は、画像を使用してLabel.Imageプロパティに設定できます。
この質問は、ラベルのテキストのpartsを選択することに関するものであることは知っていますが、テキストは最終的にクリップボードに配置されるものと想定しています。
したがって、テキスト全体をコピーしてもかまわない場合は、ラベルにClick
イベントを設定して、テキストをクリップボードにコピーします。
myLabel.Click += new System.EventHandler(MyLabel_Click);
// ...
private void MyLabel_Click(object sender, EventArgs e)
{
Clipboard.SetText(myLabel.Text);
}