2017-09-07 3 views
0

カスタムテキストボックスコントロールを作成しましたが、のテキストボックスのデフォルトテキストを設定しようとしています。そのコンストラクタでは、私はText = "My Default Text"と言っていますが、これはデザインモードのコントロールには影響しないようです。ここでカスタムテキストボックス - テキストプロパティがコンストラクタで機能しない

は、カスタムテキストボックスのコードです:

using System.Windows.Forms; 

namespace MyNameSpace 
{ 
    public class xTextBox : TextBox 
    { 
     public xTextBox() 
     { 
      BorderStyle = BorderStyle.None; 
      Text = "My Default Text"; 
     } 
    } 
} 

それから私は、ユーザーコントロールの上にそのコントロールをドロップし、何のテキスト:(

Control dropped

ここでは、私はプロパティボックスに見えるものではありません。 Textプロパティempty

Properties box

+0

Visual Studioのデザインモードでは、コンストラクタを表示するときにコンストラクタを呼び出すとは思われません。 –

+0

私の状況では '' BorderStyle''が適用され、Visual Studioはコンストラクタを呼び出します。 –

+0

私は、カスタムコントロール '' XButton'を一度試してみましたが、一度ドロップされたVSはコントロールを作成し、 '' "XButton1" ''をテキストとして設定し、テキストIを無視します。そのコンストラクタに入れる。 –

答えて

0

問題は、ここで説明されていますVirtual member call in a constructor要するに

はあなたが密封されたクラスを持っている必要が欲しいものを得るために:

public sealed class xTextBox : TextBox 
{ 
    public xTextBox() 
    { 
     BorderStyle = BorderStyle.None; 
     Text = "My Default Text"; 
    } 
} 

または密封されたTextプロパティ:

public class xTextBox : TextBox 
{ 
    public xTextBox() 
    { 
     BorderStyle = BorderStyle.None; 
     Text = "My Default Text"; 
    } 

    public sealed override string Text 
    { 
     get { return base.Text; } 
     set { base.Text = value; } 
    } 
} 

enter image description here

+0

まだ動作していない、私はそれがVisual Studioの問題だと思う、私はデザイナーを閉じ、 '' Text''を開くと、私は観察することがわかります。 –

+0

それは動作します。コントロール内の何かを変更したら、ソリューションを構築する必要があります。 – Reniuz

+0

私はそうした、何も変更されませんでした。私はVSを閉じたソリューションをきれいにし、再起動して再構築しました。コントロールテキストはドロップされると空になります。私は問題が '' Text''プロパティであることを観察します。質問に私のコメントをお読みください –

0

テキストは関数外の変数である必要があります。

Public string Text { 
      get { return this;} 
      set{value = this;} 
} 

だからです。上記のコードでは、モバイルに入力したためにエラーが発生する可能性があります。そんなことをしたら、どこにでもテキスト値を設定してください。

関連する問題