VB.NET과 Visual Studio 2005를 사용하여 데이터 소스를 만들었습니다. 데이터 소스를 대화 상자로 드래그하고 VS는 연결된 객체 인 System.Windows.Forms.BindingSource
및 System.Windows.Forms.BindingNavigator
의 멤버가있는 텍스트 상자를 만들었습니다.BindingSource/BindingNavigator : 바인딩 된 DataSource의 편집을 막는 방법?
List (myList)를 채우고 myList를 BindingSource의 DataSource로 설정하면 모든 항목이 읽기 전용이되도록 사실을 제외하고 복숭아가 작동합니다. 사용자가 텍스트 상자 중 하나에서 내용을 변경하면 변경 내용이 저장됩니다.
은 내가 BindingSource에 바인딩하는 읽기 전용 모음을 만들려고하지만 그게 문제가 해결되지 않은 : 나는 텍스트 상자를 모두 비활성화 할 수도 있겠죠Dim detailsDlg As New dlgMyDetails
Dim readOnlyList As New ReadOnlyCollection(Of MyObjects)(myList)
detailsDlg.MyBindingSource.DataSource = readOnlyList
detailsDlg.ShowDialog()
을하지만 조금 보인다 무거운 손으로, 플러스 나는 아마 글꼴 색상을 변경하여 읽기 쉽도록하고 싶습니다.
이상적으로는 사용자가 텍스트 상자에 포커스를 설정하거나 내용을 편집 할 수 있는지 여부는 신경 쓰지 않지만 변경 사항이 지속되는 것을 원하지 않습니다. 즉 누군가가 뭔가를 편집하고 네비게이터를 사용하여 다음 레코드로 이동 한 다음 반환 한 경우 사용자가 이전에했던 것과 같았습니다.
어떤 제안이나 지침이 있습니까?
미리 감사드립니다.
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와 이름은 다음과 같습니다
매우 흥미로운 아이디어! 하지만 나는이 방법으로 내 자신의 견해를 굴릴 것이라고 생각한다. 맞습니까? DataSource를 폼으로 끌어서 약 3 초 안에 DataGridView 또는 TextBox 컨트롤 모음을 가져올 수 있습니다. 라벨 세트를 만드는 것이 쉽지 않을까요? – John
@John at CashCommons - 1) 직접 롤 수 있습니다. 2) DataGridView를 사용하고 편집을 사용하지 않도록 설정할 수 있습니다. 3) TextBox 컨트롤 컬렉션처럼 쉽게 Label 컨트롤 컬렉션을 만들 수 있습니다. Textbox와 Labels는 공통의 부모 객체 인 Control을 공유합니다. –
지금 당장 VS 2005가 없지만 IDE에서 DGV 용으로 제공하는 끌어다 놓기 기능을 수정할 수 있습니까? 아니면 TextBoxes에서 레이블을 대신 제공 할 수 있습니까? 아마도 내가 갈 수있는 최선의 방법 일 것입니다.하지만 슬리브를 조금 올려 놓아야한다면 새로운 것을 배울 때 저를 죽이지 않을 것이라고 생각합니다. :) – John