如何在我的usercontrol中使只读属性可用

时间:2013-05-28 08:43:26

标签: c# user-controls

我从3个文本框中进行用户控制,但我不知道如何向它声明只读属性我尝试了很多东西但是这里不起作用是我的代码来进行控制

我想让它只在需要时读取,就像我添加复选框一样我想复选框.check = true使我的控件只读

 public partial class dateIN : UserControl
    {
        Dates datess = new Dates();
        public dateIN()
        {
            InitializeComponent();
        }

        private void dateIN_Leave(object sender, EventArgs e)
        {
            if (txtDay.Text != "" || txtMonth.Text != "" || txtYear.Text != "")
            {
                if (!datess.IsHijri(txtDay.Text.Trim() + "/" + txtMonth.Text.Trim() + "/" + txtYear.Text.Trim()))
                {
                    txtDay.Focus();
                }
            }
        }
        public string Day
        {
            set { txtDay.Text = value; }
            get { return txtDay.Text; }
        }
        public string Month
        {
            set { txtMonth.Text = value; }
            get { return txtMonth.Text; }
        }
        public string Year
        {
            set { txtYear.Text = value; }
            get { return txtYear.Text; }
        }

需要知道如何在这里提供只读属性plz

3 个答案:

答案 0 :(得分:1)

只需移除属性的set { }部分

即可

示例:

public string Day
{
   get { return txtDay.Text; }
}

答案 1 :(得分:0)

我不知道你的“txtDay”,“txtMonth”,“txtYear”来自何处的相关性,但你可以做类似的事情

public partial class dateIN : UserControl
{
   ...
   ...

   private bool AllowEditing()
   { return SomeCondition when SHOULD be allowed...; }


   public string Day
   {
      // only allow the set to apply the change if the "AllowEditing" condition
      // is true, otherwise, ignore the attempt to assign.
      set { if( AllowEditing() )
               txtDay.Text = value; }
      get { return txtDay.Text; }
   }

   // same concept for month and year too
}

答案 2 :(得分:-2)

所以你可以在你的集合中添加一些标志,然后你设置一个值。 你也可以使用名为ReadOnly的文本框属性。