سؤال

ولقد قدمت C # usercontrol مع نص واحد وrichtextbox واحد.

وكيف يمكنني الوصول إلى خصائص richtextbox من الخارج في UserControl.

وعلى سبيل المثال .. لو كنت وضعه في شكل، كيف يمكنني استخدام ممتلكاتهم نص richtextbox ؟؟؟

وذلك بفضل

هل كانت مفيدة؟

المحلول

وأنظف وسيلة لفضح الخصائص المطلوبة كما خصائص UserControl الخاص بك، منها مثلا:

class MyUserControl
{
  // expose the Text of the richtext control (read-only)
  public string TextOfRichTextBox
  {
    get { return richTextBox.Text; }
  }
  // expose the Checked Property of a checkbox (read/write)
  public bool CheckBoxProperty
  {
    get { return checkBox.Checked; }
    set { checkBox.Checked = value; }
  }


  //...
}

في هذه الطريقة يمكنك التحكم في الخصائص التي تريد كشف وما إذا كان ينبغي القراءة / الكتابة أو للقراءة فقط. (طبعا يجب عليك استخدام أسماء أفضل للخصائص، اعتمادا على معناها).

وهناك ميزة أخرى لهذا النهج هو أنه يخفي تطبيق داخلي التحكم الخاصة بك. اذا كنت تريد من أي وقت مضى لتبادل السيطرة richtext الخاص بك مع واحدة مختلفة، فلن كسر المتصلين / المستخدمين من التحكم الخاصة بك.

نصائح أخرى

وتغيير معدل وصول ( "معدلات") من RichTextBox في الشبكة الممتلكات العامة.

وإضافة خاصية لفي UserControl مثل هذا

public string TextBoxText
{
    get
    {
        return textBox1.Text;
    }
    set
    {
        textBox1.Text = value;
    }
}

وكان لي مؤخرا بعض القضايا القيام بذلك مع فئة مخصصة:

وكان عنصر تحكم المستخدم الممتلكات العامة التي كانت من نوع فئة مخصصة. مصمم بشكل افتراضي يحاول تعيين بعض قيمة له، وذلك في كود مصمم، كان يجري أضافت userControlThing.CustomClassProperty = null خط تلقائيا.

وكان القصد أن تكون قادرة على توفير عنصر تحكم المستخدم مع فئة مخصصة في أي لحظة أثناء تشغيل البرنامج (لتغيير القيم مرئية للمستخدم). لأن الجزء set {} لم يتم التحقق من القيم الخالية، والأخطاء المختلفة الزرع حتى.

وكان الحل لتغيير الخاصية إلى واحد من القطاع الخاص، واستخدام طريقتين العامة لوضع والحصول على قيمة. فإن مصمم يحاول خصائص التعيين التلقائي، لكنه يترك الطرق وحدها.

وكنت بحاجة للتأكد من الممتلكات العامة للrichtextbox، أو فضح بعض الممتلكات الأخرى التي لا وظيفة من وضع النص richtextbox مثل:

private RichTextBox rtb;

public string RichTextBoxText
{
    get
    {
        return rtb.Text;
    }
    set
    {
        rtb.Text = value;
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top