İzlenecek yol: Standart türlerin koleksiyonlarını serileştirme
Özel denetimleriniz bazen bir koleksiyonu özellik olarak kullanıma sunar. Bu izlenecek yol, DesignerSerializationVisibilityAttribute bir koleksiyonun tasarım zamanında nasıl serileştirildiği denetlemek için sınıfının nasıl kullanılacağını gösterir. ContentDeğer koleksiyon özelliğine uygulandığında, özelliğin serileştirilmesi gerekir.
Bu konudaki kodu tek bir liste olarak kopyalamak için bkz. nasıl yapılır: Standart türlerin koleksiyonlarını DesignerSerializationVisibilityAttribute Ile serileştirme.
Önkoşullar
bu yönergeyi tamamlamak için Visual Studio gerekir.
Seri hale getirilebilir koleksiyonla bir denetim oluşturma
İlk adım, bir seri hale getirilebilir koleksiyonu özelliği olarak bir denetim oluşturmaktır. Bu koleksiyonun içeriğini, Özellikler penceresinden erişebileceğiniz koleksiyon düzenleyicisinikullanarak düzenleyebilirsiniz.
Visual Studio, bir Windows denetim kitaplığı projesi oluşturun ve serializationdemocontrollibolarak adlandırın.
Olarak yeniden adlandırın
UserControl1SerializationDemoControl. Daha fazla bilgi için bkz. kod sembolünü yeniden düzenlemeyi yeniden adlandırma.Özellikler penceresinde, özelliğinin değerini 10olarak ayarlayın.
İçine bir TextBox Denetim koyun
SerializationDemoControl.Denetimi seçin TextBox . Özellikler penceresinde, aşağıdaki özellikleri ayarlayın.
Özellik Şununla değiştirin Multiline trueDock Fill Çubuklarını Vertical Özelliğinin trueKod düzenleyicisinde, içinde adlı bir dize dizisi alanı bildirin
SerializationDemoControl.// This field backs the Strings property. private: array<String^>^ stringsValue;// This field backs the Strings property. private String[] stringsValue = new String[1];' This field backs the Strings property. Private stringsValue(1) As StringStringsÜzerinde özelliğini tanımlayınSerializationDemoControl.Not
ContentDeğer, koleksiyonun serileştirmesini etkinleştirmek için kullanılır.
// When the DesignerSerializationVisibility attribute has // a value of "Content" or "Visible" the designer will // serialize the property. This property can also be edited // at design time with a CollectionEditor. public: [DesignerSerializationVisibility( DesignerSerializationVisibility::Content)] property array<String^>^ Strings { array<String^>^ get() { return this->stringsValue; } void set(array<String^>^ value) { this->stringsValue = value; // Populate the contained TextBox with the values // in the stringsValue array. StringBuilder^ sb = gcnew StringBuilder(this->stringsValue->Length); for (int i = 0; i < this->stringsValue->Length; i++) { sb->Append(this->stringsValue[i]); sb->Append(Environment::NewLine); } this->demoControlTextBox->Text = sb->ToString(); } }// When the DesignerSerializationVisibility attribute has // a value of "Content" or "Visible" the designer will // serialize the property. This property can also be edited // at design time with a CollectionEditor. [DesignerSerializationVisibility( DesignerSerializationVisibility.Content )] public String[] Strings { get { return this.stringsValue; } set { this.stringsValue = value; // Populate the contained TextBox with the values // in the stringsValue array. StringBuilder sb = new StringBuilder(this.stringsValue.Length); for (int i = 0; i < this.stringsValue.Length; i++) { sb.Append(this.stringsValue[i]); sb.Append("\r\n"); } this.textBox1.Text = sb.ToString(); } }' When the DesignerSerializationVisibility attribute has ' a value of "Content" or "Visible" the designer will ' serialize the property. This property can also be edited ' at design time with a CollectionEditor. <DesignerSerializationVisibility( _ DesignerSerializationVisibility.Content)> _ Public Property Strings() As String() Get Return Me.stringsValue End Get Set(ByVal value As String()) Me.stringsValue = Value ' Populate the contained TextBox with the values ' in the stringsValue array. Dim sb As New StringBuilder(Me.stringsValue.Length) Dim i As Integer For i = 0 To (Me.stringsValue.Length) - 1 sb.Append(Me.stringsValue(i)) sb.Append(ControlChars.Cr + ControlChars.Lf) Next i Me.textBox1.Text = sb.ToString() End Set End PropertyProjeyi derlemek için F5 tuşuna basın ve denetimi UserControl Test kapsayıcısındaçalıştırın.
UserControl test kapsayıcısınıniçinde dizeler özelliğini bulun. Dizeler özelliğini seçin ve sonra
dize koleksiyonu düzenleyicisiniaçmak için üç nokta () düğmesini seçin.Dize koleksiyonu düzenleyicisinebirkaç dize girin. Her bir dizenin sonundaki ENTER tuşuna basarak onları ayırın. Dizeleri girmeyi tamamladığınızda Tamam ' a tıklayın.
Not
Yazdığınız dizeler içinde görüntülenir TextBoxSerializationDemoControl .
Koleksiyon özelliğini serileştirme
Denetiminizin serileştirme davranışını test etmek için, bunu bir forma yerleştirip koleksiyonun içeriğini koleksiyon Düzenleyicisiile değiştirirsiniz. seri hale getirilmiş koleksiyon durumunu, Windows Form Tasarımcısı kod yaydığı özel bir tasarımcı dosyasına bakarak görebilirsiniz.
çözüme Windows bir uygulama projesi ekleyin. Projeyi adlandırın
SerializationDemoControlTest.Araç kutusundaSerializationDemoControlLib bileşenleriadlı sekmeyi bulun. Bu sekmede, ' yi bulacaksınız
SerializationDemoControl. Daha fazla bilgi için bkz. Izlenecek yol: araç kutusunu özel bileşenlerle otomatik olarak doldurma.Formunuza bir koyun
SerializationDemoControl.StringsStringspenceresinde özelliği bulun. Özelliği tıklatınStrings, sonraStringsdize koleksiyonu düzenleyicisiniaçmak için üç nokta () düğmesine tıklayın.Dize koleksiyonu düzenleyicisinebirkaç dize yazın. Her bir dizenin sonunda ENTER tuşuna basarak onları ayırın. Dizeleri girmeyi tamamladığınızda Tamam ' a tıklayın.
Not
Yazdığınız dizeler içinde görüntülenir TextBox
SerializationDemoControl.Çözüm Gezgini, tüm dosyaları göster düğmesine tıklayın.
Form1 düğümünü açın. Bunun altında Form1. Designer. cs veya Form1. Designer. vbadlı bir dosyadır. bu, Windows Form Tasarımcısı formunuzun tasarım zamanı durumunu ve onun alt denetimlerini temsil eden kodu yaydığı dosyadır. Bu dosyayı kod düzenleyicisindeaçın.
Windows Form tasarımcısı tarafından üretilen kod adlı bölgeyi açın ve serializationDemoControl1etiketli bölümü bulun. Bu etiketin altında, denetiminizin serileştirilmiş durumunu temsil eden kod bulunur. 5. adımda yazdığınız dizeler, özelliği için bir atamada görüntülenir
Strings. C# ve Visual Basic içindeki aşağıdaki kod örnekleri, "red", "turuncu" ve "sarı" dizelerini yazdığınız sırada göreceğiniz şekilde benzer kodu gösterir.this.serializationDemoControl1.Strings = new string[] { "red", "orange", "yellow"};Me.serializationDemoControl1.Strings = New String() {"red", "orange", "yellow"}Kod düzenleyicisinde, özelliğindeki öğesinin değerini olarak değiştirin
StringsHidden .[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]<DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)> _Çözümü yeniden derleyin ve 3. ve 4. adımları yineleyin.
Not
bu durumda Windows Form Tasarımcısı , özelliğe atama yapılmaz .
Sonraki adımlar
Standart türlerden oluşan bir koleksiyonun nasıl serileştirildiğini öğrendikten sonra, özel denetimlerinizi tasarım zamanı ortamına göre daha ayrıntılı bir şekilde tümleştirmeyi düşünün. Aşağıdaki konularda, özel denetimlerinizin tasarım zamanı tümleştirmesinin nasıl geliştirileceğini anlatmaktadır: