代码之家  ›  专栏  ›  技术社区  ›  John

BindingSource/BindingNavigator:如何防止编辑绑定的数据源?

  •  0
  • John  · 技术社区  · 16 年前

    我用VB.NET和Visual Studio 2005创建了一个数据源。我将数据源拖到对话框中,VS用链接对象的成员创建了文本框 System.Windows.Forms.BindingSource System.Windows.Forms.BindingNavigator .

    我填充列表(称为myList),将myList设置为BindingSource中的数据源,除了我希望它是只读的之外,一切都很顺利。如果用户在其中一个文本框中更改了某些内容,则会保存更改。

    我尝试创建一个只读集合以绑定到BindingSource,但这并没有解决问题:

    Dim detailsDlg As New dlgMyDetails
    Dim readOnlyList As New ReadOnlyCollection(Of MyObjects)(myList)
    
    detailsDlg.MyBindingSource.DataSource = readOnlyList
    detailsDlg.ShowDialog()
    

    有什么建议/指导吗?

    提前谢谢!

    2 回复  |  直到 16 年前
        1
  •  2
  •   Wayne Hartman    16 年前

    从模型视图控件的角度来看,所需的约束不在模型或控件上,而是在视图上。视图应限制屏幕上可编辑的内容。

        2
  •  1
  •   dkartopr    16 年前

    您可以将类(MyObject)中的属性更改为只读,或将属性System.ComponentModel.ReadOnly(true)添加到属性中,而不是创建只读集合,例如:

    class Person
    {
        public Person(int id, string name, string address)
        {
            _id = id;
            Name = name;
            Address = address;
        }
    
        private int _id = 0;
        public int ID { get { return _id; } }
    
        [System.ComponentModel.ReadOnly(true)]
        public string Name { get; set; }
    
        public string Address { get; set; }
    }
    

    ID和名称将是只读的,如果示例是C#,则很抱歉。希望这有帮助。

    干杯

    推荐文章