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:
Visual Studio'da Proje Gezgini penceresini bulun. Projeye sağ tıklayın ve Kullanıcı Denetimi Ekle 'yi>(WindowsForm) seçin.
Denetimin Adını ClearableTextBox olarak ayarlayın ve Ekle'ye basın.
Kullanıcı denetimi oluşturulduktan sonra Visual Studio tasarımcıyı açar:
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:
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
Denetim Label ekleyin. Aşağıdaki özellikleri ayarlayın:
Özellik Değer Veri Akışı Adı lblTitle
Konum 3, 5
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
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:
Sınıfın kod düzenleyicisini açmak için F7 tuşuna
ClearableTextBox
basın.Aşağıdaki kod değişikliklerini yapın:
Kod dosyasının üst kısmında ad alanını içeri aktarın
System.ComponentModel
.ö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
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.özelliğini tüketiciye ileden
TextBox.Text
adlıText
bir 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
özelliğini tüketiciye ileden
Label.Text
adlıTitle
bir 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
Tasarımcıya
ClearableTextBox
geri dönün ve denetime çift tıklayarakbtnClear
olay içinClick
bir işleyici oluşturun. metin kutusunu temizleyentxtValue
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
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.
Çözüm Gezgini penceresinde, formu çift tıklatarak tasarımcıyı açın. Formun tasarım yüzeyi seçilmelidir.
Formun
Size
özelliğini olarak432, 315
ayarlayın.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.
İkinci bir denetim oluşturmak için Yine ClearableTextBox denetimine çift tıklayın.
Tasarımcıya geri dönün ve her ikisini de görebilmek için denetimleri ayırın.
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
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
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
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şleyicisiniTextChanged
oluşturur ve kod düzenleyicisini açar.Tasarımcıya geri dönün ve ikinci olay işleyicisini
ctlLastName
oluşturmak için denetime çift tıklayın.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.Kod düzenleyicisinde adlı
UpdateNameLabel
bir yöntem ekleyin. Bu yöntem, bir ileti oluşturmak için her iki adı birleştirir ve iletiyi denetimelblFullName
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
Her iki
TextChanged
olay işleyicisi için yöntemini çağırınUpdateNameLabel
: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
Son olarak, formun
UpdateNameLabel
olayından yöntemini çağırınLoad
: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:
Metin kutularından birini sıfırlamak için düğmeye basmayı ↻
deneyin.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin