Kullanıcı denetimi oluşturma (Windows.NET Form)

Bu makalede, projenize kullanıcı denetimi eklemeyi ve ardından bu kullanıcı denetimini forma eklemeyi öğreneceksiniz. Hem görsel açıdan çekici hem de işlevsel olan yeniden kullanılabilir bir kullanıcı denetimi oluşturacaksınız. Yeni denetim, denetimi bir TextBox denetimle gruplandıran bir Button denetimdir. Kullanıcı düğmeyi seçtiğinde, metin kutusundaki metin temizlenir. Kullanıcı denetimleri hakkında daha fazla bilgi için bkz . Kullanıcı denetimine genel bakış.

Önemli

.NET 7 ve .NET 6 için Masaüstü Kılavuzu belgeleri yapım aşamasındadır.

Projeye kullanıcı denetimi ekleme

Windows Formprojenizi Visual Studio'da açtıktan sonra, kullanıcı denetimi oluşturmak için Visual Studio şablonlarını kullanın:

  1. Visual Studio'da Proje Gezgini penceresini bulun. Projeye sağ tıklayın ve Kullanıcı Denetimi Ekle 'yi>(WindowsForm) seçin.

    Bir Windows Formprojesine kullanıcı denetimi eklemek için Visual Studio çözüm gezginine sağ tıklayın

  2. Denetimin Adını ClearableTextBox olarak ayarlayın ve Ekle'ye basın.

    Windows Formiçin Visual Studio'da öğe ekle iletişim kutusu

Kullanıcı denetimi oluşturulduktan sonra Visual Studio tasarımcıyı açar:

Windows Formiçin Visual Studio'daki kullanıcı denetim tasarımcısı

Temizlenebilir metin kutusunu tasarlama

Kullanıcı denetimi, form tasarladığınız gibi tasarım yüzeyinde oluşturduğunuz denetimler olan bağlı denetimlerden oluşur. Kullanıcı denetimini ve onun kurucu denetimlerini eklemek ve yapılandırmak için şu adımları izleyin:

  1. Tasarımcı açıkken, kullanıcı denetimi tasarım yüzeyi seçili nesne olmalıdır. Değilse, seçmek için tasarım yüzeyine tıklayın. Özellikler penceresinde aşağıdaki özellikleri ayarlayın:

    Özellik Değer
    Minimumsize 84, 53
    Size 191, 53
  2. Denetim Label ekleyin. Aşağıdaki özellikleri ayarlayın:

    Özellik Değer
    Veri Akışı Adı lblTitle
    Konum 3, 5
  3. Denetim TextBox ekleyin. Aşağıdaki özellikleri ayarlayın:

    Özellik Değer
    Veri Akışı Adı txtValue
    Bağlayıcı Top, Left, Right
    Konum 3, 23
    Size 148, 23
  4. Denetim Button ekleyin. Aşağıdaki özellikleri ayarlayın:

    Özellik Değer
    Veri Akışı Adı btnClear
    Bağlayıcı Top, Right
    Konum 157, 23
    Size 31, 23
    Metin

    Denetim aşağıdaki görüntü gibi görünmelidir:

    Windows Forms ile Visual Studio, yeni tasarlanmış kullanıcı denetimini gösterir.

  5. Sınıfın kod düzenleyicisini açmak için F7 tuşuna ClearableTextBox basın.

  6. Aşağıdaki kod değişikliklerini yapın:

    1. Kod dosyasının üst kısmında ad alanını içeri aktarın System.ComponentModel .

    2. özniteliğini DefaultEvent sınıfına ekleyin. Bu öznitelik, tasarımcıda denetime çift tıklandığında tüketici tarafından hangi olayın oluşturulduğunu ayarlar. Tüketici, bu denetimi belirten ve kullanan nesnedir.

      using System.ComponentModel;
      
      namespace UserControlProject
      {
          [DefaultEvent(nameof(TextChanged))]
          public partial class ClearableTextBox : UserControl
      
      Imports System.ComponentModel
      
      <DefaultEvent("TextChanged")>
      Public Class ClearableTextBox
      
    3. Olayı tüketiciye ileden TextBox.TextChanged bir olay işleyicisi ekleyin:

      [Browsable(true)]
      public new event EventHandler? TextChanged
      {
          add => txtValue.TextChanged += value;
          remove => txtValue.TextChanged -= value;
      }
      
      <Browsable(True)>
      Public Shadows Custom Event TextChanged As EventHandler
          AddHandler(value As EventHandler)
              AddHandler txtValue.TextChanged, value
          End AddHandler
          RemoveHandler(value As EventHandler)
              RemoveHandler txtValue.TextChanged, value
          End RemoveHandler
          RaiseEvent(sender As Object, e As EventArgs)
      
          End RaiseEvent
      End Event
      

      Olayın üzerinde bildirilen özniteliği olduğuna Browsable dikkat edin. Browsable bir olaya veya özelliğe uygulandığında, denetim tasarımcıda seçildiğinde öğenin Özellikler penceresinde görünür olup olmadığını denetler. Bu durumda, true olayın görünür olması gerektiğini belirten özniteliğine parametre olarak geçirilir.

    4. özelliğini tüketiciye ileden TextBox.Text adlı Textbir dize özelliği ekleyin:

      [Browsable(true)]
      public new string Text
      {
          get => txtValue.Text;
          set => txtValue.Text = value;
      }
      
      <Browsable(True)>
      Public Shadows Property Text() As String
          Get
              Return txtValue.Text
          End Get
          Set(value As String)
              txtValue.Text = value
          End Set
      End Property
      
    5. özelliğini tüketiciye ileden Label.Text adlı Titlebir dize özelliği ekleyin:

      [Browsable(true)]
      public string Title
      {
          get => lblTitle.Text;
          set => lblTitle.Text = value;
      }
      
      <Browsable(True)>
      Public Property Title() As String
          Get
              Return lblTitle.Text
          End Get
          Set(value As String)
              lblTitle.Text = value
          End Set
      End Property
      
  7. Tasarımcıya ClearableTextBox geri dönün ve denetime çift tıklayarak btnClear olay için Click bir işleyici oluşturun. metin kutusunu temizleyen txtValue işleyici için aşağıdaki kodu ekleyin:

    private void btnClear_Click(object sender, EventArgs e) =>
        Text = "";
    
    Private Sub btnClear_Click(sender As Object, e As EventArgs)
        txtValue.Text = ""
    End Sub
    
  8. Son olarak, Çözüm Gezgini penceresinde projeye sağ tıklayıp Oluştur'a tıklayarak projeyi derleyin. Herhangi bir hata olmamalıdır ve derleme tamamlandıktan ClearableTextBox sonra denetim, kullanım için araç kutusunda görünür.

Sonraki adım, denetimi bir formda kullanmaktır.

Örnek uygulama

Son bölümde yeni bir proje oluşturduysanız, 1 adlı Formboş Form bir formunuz var, aksi takdirde yeni bir form oluşturun.

  1. Çözüm Gezgini penceresinde, formu çift tıklatarak tasarımcıyı açın. Formun tasarım yüzeyi seçilmelidir.

  2. Formun Size özelliğini olarak 432, 315ayarlayın.

  3. Araç Kutusu penceresini açın ve ClearableTextBox denetimine çift tıklayın. Bu denetim, projenizin adını taşıyan bir bölüm altında listelenmelidir.

  4. İkinci bir denetim oluşturmak için Yine ClearableTextBox denetimine çift tıklayın.

  5. Tasarımcıya geri dönün ve her ikisini de görebilmek için denetimleri ayırın.

  6. Bir denetim seçin ve aşağıdaki özellikleri ayarlayın:

    Özellik Değer
    Veri Akışı Adı ctlFirstName
    Konum 12, 12
    Size 191, 53
    Başlık First Name
  7. Diğer denetimi seçin ve aşağıdaki özellikleri ayarlayın:

    Özellik Değer
    Veri Akışı Adı ctlLastName
    Konum 12, 71
    Size 191, 53
    Başlık Last Name
  8. Araç Kutusu penceresine dönüp forma bir etiket denetimi ekleyin ve aşağıdaki özellikleri ayarlayın:

    Özellik Değer
    Veri Akışı Adı lblFullName
    Konum 12, 252
  9. Ardından, iki kullanıcı denetimi için olay işleyicileri oluşturmanız gerekir. Tasarımcıda denetime ctlFirstName çift tıklayın. Bu eylem, olay için olay işleyicisini TextChanged oluşturur ve kod düzenleyicisini açar.

  10. Tasarımcıya geri dönün ve ikinci olay işleyicisini ctlLastName oluşturmak için denetime çift tıklayın.

  11. Tasarımcıya geri dönün ve formun başlık çubuğuna çift tıklayın. Bu eylem, olay için bir olay işleyicisi Load oluşturur.

  12. Kod düzenleyicisinde adlı UpdateNameLabelbir yöntem ekleyin. Bu yöntem, bir ileti oluşturmak için her iki adı birleştirir ve iletiyi denetime lblFullName atar.

    private void UpdateNameLabel()
    {
        if (string.IsNullOrWhiteSpace(ctlFirstName.Text) || string.IsNullOrWhiteSpace(ctlLastName.Text))
            lblFullName.Text = "Please fill out both the first name and the last name.";
        else
            lblFullName.Text = $"Hello {ctlFirstName.Text} {ctlLastName.Text}, I hope you're having a good day.";
    }
    
    Private Sub UpdateNameLabel()
        If String.IsNullOrWhiteSpace(ctlFirstName.Text) Or String.IsNullOrWhiteSpace(ctlLastName.Text) Then
            lblFullName.Text = "Please fill out both the first name and the last name."
        Else
            lblFullName.Text = $"Hello {ctlFirstName.Text} {ctlLastName.Text}, I hope you're having a good day."
        End If
    End Sub
    
  13. Her iki TextChanged olay işleyicisi için yöntemini çağırın UpdateNameLabel :

    private void ctlFirstName_TextChanged(object sender, EventArgs e) =>
        UpdateNameLabel();
    
    private void ctlLastName_TextChanged(object sender, EventArgs e) =>
        UpdateNameLabel();
    
    Private Sub ctlFirstName_TextChanged(sender As Object, e As EventArgs) Handles ctlFirstName.TextChanged
        UpdateNameLabel()
    End Sub
    
    Private Sub ctlLastName_TextChanged(sender As Object, e As EventArgs) Handles ctlLastName.TextChanged
        UpdateNameLabel()
    End Sub
    
  14. Son olarak, formun UpdateNameLabel olayından yöntemini çağırın Load :

    private void Form1_Load(object sender, EventArgs e) =>
        UpdateNameLabel();
    
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        UpdateNameLabel()
    End Sub
    

Projeyi çalıştırın ve bir ad ve soyadı girin:

Kullanıcı denetimlerinden oluşturulan iki metin kutusu ve bir etiket içeren bir Windows Formuygulaması.

Metin kutularından birini sıfırlamak için düğmeye basmayı deneyin.