2017-11-03 13 views
0

Designer内で動的に生成されたコンポーネントのクリックイベントをどのように実装できるか、誰でも私の質問に答えてくれますか?TextBox、Label、Buttonコントロールのイベントをデザインサーフェイス内で使用する

私は

class MenuCommandServiceExt:IMenuCommandService 

クラス内のスニペット以下の用途を持っていますが、任意の成功を得ませんでした。The DesignSurface (Extended) Class is Back, Together with a DesignSurfaceManager (Extended) Class and a Form Designer Demo! [^]ウェブサイト

を参照していました

if ((string)menuItem.Tag == "Label") 
       { 
        var lbl1 = (Label)surface.CreateControl(typeof(Label), 
        new Size(300, 20), new Point(10, 80)); 

        this.lbl1.Text = "Hello World by DesignSurfaceExt"; 
        this.lbl1.Click += new EventHandler(btnclick_Click); 
        this.lbl1.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.lbl_MouseDoubleClick); 
       } 

私はまた、ラベル内で定義されたすべてのイベントとラベルのためのユーザーコントロールを作成し、上記のコードスニペットを通してそれを作るを通してそれを達成しようとしたが、それはまた働いていませんでした。以下は私がユーザーコントロールに使用したロジックです。

if ((string)menuItem.Tag == "Label") 
       { 
        var lbl1 = (MyLabel)surface.CreateControl(typeof(MyLabel), 
        new Size(300, 20), new Point(10, 80)); 
       } 

ユーザーコントロール

public class MyLabel : Label 
    { 
    public MyLabel() 
     { 

      this.DoubleClick += new EventHandler(MyLabel_Click); 
     } 

void MyLabel_Click(object sender, EventArgs e) 
     { 
      MessageBox.Show("Clicked"); 
     } 
......... 
..... 
... 
} 

はまた、私は強力なDesignSurfaceデザイナーの内側に構築された私のカスタムフォームを表示/保存したいです。それをどうすれば実現できますか?あなただけのmylabelというを入力するユーザーコントロールをキャスト

答えて

0

var lbl1 = (MyLabel)surface.CreateControl(typeof(MyLabel), new Size(300, 20), new Point(10, 80)); 

だから、それはコンストラクタでオブジェクトを作成できません。 コンストラクタでオブジェクトを作成し、次に "サーフェス"オブジェクトに追加する必要があります。

MyLabel label1 = new MyLabel(); 
label1.DoubleClick += new EventHandler(MyLabel_Click); 
surface.Controls.Add(label1); 
} 

void MyLabel_Click(object sender, EventArgs e) 
{ 
MessageBox.Show("Clicked"); 
} 

希望します。

+0

いいえ私はこの解決策を試しましたが、それは私のために働いていませんでした。 –

+0

誰もがこれを調べました。最後の学期のプロジェクトの途中で、このコードを熱心に要求します。私を助けてください。あなたの調整を感謝します。 –

関連する問題