none
TextBoxの境界線の色を設定する方法 RRS feed

回答

  • trapemiyaさん、いつも丁寧に教えてくださり感謝申し上げます。

    >#忘れてました。上のテキストボックスはボーダーを表示しないようにして下さい。(^^;

    >#別の方法としては、普通のテキストボックス(ボーダー無し)を配置しておいて、
    >フォームのOnPaintでテキストボックスの周りにボーダーを書いてもいいと思います。

    教えていただいたようにBorderをnoneにすることによって解決できました。ありがとうございました。

    2006年7月28日 13:08

すべての返信

  • zen73 さん、こんにちは。

     zen73 さんからの引用
    TextBoxの境界線の色を設定したいのですが、可能でしょうか。

    System.Drawing.Graphics.DrawRectangle メソッドで、描画すれば可能でしょう。

    2006年7月28日 10:30
  • じゃんぬねっとさん、いつも素早い対応でご教示いただきありがとうございます。
         Location(40,60)、Size (100,22)のTextBoxに対して四角形を
        重ねてみたのですが、TextBoxの背後に隠れてしまいます。
         そのためTextBoxの周囲に四角形を書いてみましたが、《色を変える》
        という感じではありません。
            private void Form1_Paint(object sender, PaintEventArgs e)
            {
                Graphics tbxRect = e.Graphics;
                tbxRect.DrawRectangle(Pens.Red, 39,59,101,23);
            }
    なにか、いい方法はないでしょうか。
    2006年7月28日 12:46
  • いろいろな方法があると思いますが、ざくっとこんな感じでしょう。
    
     public partial class TextBoxEx : System.Windows.Forms.TextBox
     {
        private System.Drawing.Color _borderColor = System.Drawing.Color.FromArgb(100, 100, 100);
    
        public System.Drawing.Color BorderColor
        {
          get { return _borderColor; }
          set { _borderColor = value; }
        }


    protected override void WndProc(ref Message m) { if (m.Msg == 0x85) //WM_NCPAINT { System.Drawing.Graphics gfx = this.Parent.CreateGraphics(); Rectangle rct = new Rectangle(this.Location, this.Size); rct.Inflate(1, 1); System.Windows.Forms.ControlPaint.DrawBorder(gfx, rct, _borderColor, System.Windows.Forms.ButtonBorderStyle.Solid); } base.WndProc(ref m); } }

    #忘れてました。上のテキストボックスはボーダーを表示しないようにして下さい。(^^;

    #別の方法としては、普通のテキストボックス(ボーダー無し)を配置しておいて、
    フォームのOnPaintでテキストボックスの周りにボーダーを書いてもいいと思います。
    2006年7月28日 12:47
    モデレータ
  • trapemiyaさん、いつも丁寧に教えてくださり感謝申し上げます。

    >#忘れてました。上のテキストボックスはボーダーを表示しないようにして下さい。(^^;

    >#別の方法としては、普通のテキストボックス(ボーダー無し)を配置しておいて、
    >フォームのOnPaintでテキストボックスの周りにボーダーを書いてもいいと思います。

    教えていただいたようにBorderをnoneにすることによって解決できました。ありがとうございました。

    2006年7月28日 13:08
  • zen73 さん、こんにちは。

    私の勝手な詭弁になってしまいますが、

     zen73 さんからの引用
    TextBoxの背後に隠れてしまいます。
    そのためTextBoxの周囲に四角形を書いてみましたが、《色を変える》という感じではありません。

    zen73 さんご自身が書かれているように、BorderStyle を None にした状態で、
    周りに描画すれば、結果的に 境界線の色が変更されたかのように見えるというわけです。

    説明不足ですみませんでした。

    2006年7月29日 2:52