Я создал источник данных с помощью 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()
Думаю, я мог бы отключить все текстовые поля, но это кажется немного неуклюжим, плюс я, вероятно, захочу изменить цвет шрифта, чтобы его было легче читать.
В идеале мне, вероятно, было бы все равно, если бы пользователи могли устанавливать фокус на текстовые поля или даже редактировать содержимое, но я просто не хотел бы, чтобы какие-либо изменения сохранялись. То есть, если кто-то что-то отредактировал, с помощью навигатора перешел к следующей записи, а потом вернулся, я бы хотел, чтобы было так, как было до того, как пользователь с этим поигрался.
Любые предложения / рекомендации?
Заранее спасибо!