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