2013-02-26 2 views
0

Вот часть стандартного Label управления в WinForms:проистекают из базового класса и переопределения функции

public class Label : Control 
{ 
     protected override void OnTextChanged(EventArgs e) 
     { 
      ... 
     } 
} 

Я хотел бы переопределить OnTextChanged событие, но я не уверен, что лучший способ.

Должен ли я получить подкласс класса Label, а затем переопределить эту функцию?

public class Class1 : Label 
{ 
    protected override void OnTextChanged(EventArgs e) 
    { 
     MessageBox.Show("S"); 
    } 
} 

Если да, то как и где я должен добавить этот класс?

Если нет, то как я могу переопределить функции, определенные внутри элемента управления?

+1

Ваш код хорошо ... Ваш вопрос «как использовать мой новый' Class1' на моей форме вместо экземпляров 'label'»? –

+1

После того, как вы скомпилируете проект, ваш элемент управления Class1 будет находиться в панели инструментов, в верхней части его –

+0

Вы управляете элементом управления только для этого? Если это так, вы должны, скорее всего, назначить обработчик событий для события OnTextChanged. –

ответ

4

Так вы можете переопределить метод управления. Как вы это сделали, абсолютно правильно, но детальная реализация здесь.

Это форма часть

using System; 
using System.Windows.Forms; 

namespace WindowsFormsApplication1 
{ 
    public partial class TestForm : Form 
    { 
     MyLabel newLable; 
     public TestForm() 
     { 
      InitializeComponent(); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      newLable = new MyLabel(); 
      newLable.Height = 30; 
      newLable.Width = 40; 
      newLable.Text = "hello"; 
      this.Controls.Add(newLable); 

     }  
    } 
} 

Вы можете использовать MyLabel из панели инструментов также.

И класс MyLabel является

using System; 
using System.Windows.Forms; 

namespace WindowsFormsApplication1 
{ 

    public class MyLabel:Label 
    { 

     public MyLabel() 
     { 

     } 
     protected override void OnClick(EventArgs e) 
     { 
      base.OnClick(e); 
      MessageBox.Show("Label Clicked"); 
     } 

    } 
} 
+0

спасибо большое. все идет хорошо :) – user1422847

Смежные вопросы