2011-10-23 30 views
9

Tôi đang cố gắng liên kết một số đối tượng Winform với một lớp tùy chỉnh, cụ thể hơn là một thể hiện của lớp tùy chỉnh mà tôi đã thêm vào Biểu mẫu trong mã. C#, .NET 2010 Express.Kết nối dữ liệu Winforms với lớp tùy chỉnh

Ví dụ, đây là một mảnh vỡ của lớp, và UserInfoForm

public class UserInfo 
{ 
    [XmlAttribute] 
    public string name = "DefaultName"; 

    [XmlAttribute] 
    public bool showTutorial = true; 

    [XmlAttribute] 
    public enum onCloseEvent = LastWindowClosedEvent.Exit; 
} 

public enum LastWindowClosedEvent 
{ 
    MainMenu, 
    Exit, 
    RunInBackground 
} 


public partial class Form1 : Form 
{ 
    UserInfo userToBind = new UserInfo(); 

    TextBox TB_userName = new TextBox(); 
    CheckBox CB_showTutorial = new CheckBox(); 
    ComboBox DDB_onCloseEvent = new ComboBox(); 

    public Form1() 
    { 
     InitializeComponent(); 
    } 
} 

Bây giờ, tôi muốn để ràng buộc các giá trị của những hình thức kiểm soát giá trị tương ứng của họ trong userToBind, nhưng đã không có may mắn . Tất cả các hướng dẫn tôi có thể tìm thấy là một trong hai cách ra khỏi ngày (2002), hoặc về ràng buộc điều khiển để một tập dữ liệu, hoặc các loại cơ sở dữ liệu.

Tôi rõ ràng đang xem một cái gì đó, nhưng tôi đã không tìm ra điều gì.

Cảm ơn bạn rất nhiều vì bất kỳ thông tin nào bạn có thể chia sẻ.

Thông tin thêm: UserInfo được thiết kế thân thiện với XML để có thể lưu dưới dạng hồ sơ người dùng. UserInfo sẽ chứa các lớp XML tùy chỉnh khác, tất cả được lồng trong UserInfo và nhiều điều khiển sẽ chỉ cần truy cập vào các lớp con này.

Trả lời

16

Bạn có thể sử dụng thuộc tính DataBindings của các điều khiển (hộp văn bản, hộp kiểm ...) để thêm một ràng buộc vào một điều khiển cụ thể. Ví dụ:

public Form1() 
{ 
    InitializeComponent(); 
    TB_userName.DataBindings.Add("Text", userToBind, "name"); 
} 

Ngoài ra, IIRC, dữ liệu ràng buộc chỉ hoạt động trên properties, vì vậy đầu tiên bạn sẽ cần phải sửa đổi lớp UserInfo của bạn cho phù hợp. Hơn nữa, nếu bạn muốn giao diện người dùng tự động cập nhật khi sửa đổi các đối tượng của bạn trong mã, bạn phải thực hiện INotifyPropertyChanged trong các lớp tùy chỉnh của mình.

+3

Tôi cũng nhận thấy rằng các thuộc tính cần được công khai, nội bộ không hoạt động đối với tôi. – RichieACC

Các vấn đề liên quan