- 題名: Button.Textの色を一文字ずつ変えたい
- 日時: 2012/04/09 11:22:42
- ID: 30249
- この記事の返信元:
- (なし)
- この記事への返信:
- [30250] Re[1]: Button.Textの色を一文字ずつ変えたい2012/04/09 11:51:47
- [30252] Re[1]: Button.Textの色を一文字ずつ変えたい2012/04/09 12:06:22
- ツリーを表示
■No30249に返信(まおさんの記事)
Textは空文字列にしておく。
FlatStyleはSystem以外にしておく。
Font指定、Brush指定、座標指定は調整してください。
Private Sub Button1_Paint(sender As Object, e As System.Windows.Forms.PaintEventArgs) Handles Button1.Paint
Dim g = e.Graphics
g.DrawString("L", Button1.Font, Brushes.Red, New Point(3, 5))
g.DrawString("/", Button1.Font, Brushes.Black, New Point(13, 5))
g.DrawString("R", Button1.Font, Brushes.Blue, New Point(23, 5))
End Sub
■No30249に返信(まおさんの記事)
> 何か良い方法はありますでしょうか?
案1) ボタンの Image プロパティに、文字列を描いた画像を貼り付ける。
案2) 上に置いたラベルの WM_NCHITTEST を上書きして、
マウス操作を透過するようにする。
public class MaoLabel : Label
{
protected override void WndProc(ref Message m)
{
const int WM_NCHITTEST = 0x84;
if (m.Msg == WM_NCHITTEST && !DesignMode)
{
m.Result = new IntPtr(-1); //HTTRANSPARENT
}
else
{
base.WndProc(ref m);
}
}
}
分類:[.NET]
Button1のTextにL/Rと設定しています。
この「L/R」を【Lを赤】【/を黒】【Rを青】と
一文字ずつ色を変えたいです。
ひとつ考えていたのが
ユーザーコントロールを作成し、
ボタンの上に3つのラベルを配置し
それぞれの色を変える方法です。
ですが、上記の方法だと
ボタンがラベルの下にあるため
クリックする位置によって
クリックイベントが起きません。
(ラベルの上をクリックするとクリックイベントが起きない)
何か良い方法はありますでしょうか?
よろしくお願いいたします。