Tôi có một số ListBox
được ràng buộc với một BindingList
. BindingList
được tạo khi ứng dụng của bên thứ ba tăng sự kiện. Tôi có thể thấy BindingList
bị ràng buộc chính xác ... nhưng không có gì nhập vào ListBox
. Tôi đã sử dụng chính xác cùng một logic với một số loại tùy chỉnh của riêng tôi và nó thường hoạt động rất tốt.BindingList không cập nhật bị ràng buộc ListBox
lớp Mẫu lớp
private Facade.ControlFacade _controlFacade;
public UavControlForm()
{
InitializeComponent();
_controlFacade = new UavController.Facade.ControlFacade();
UpdateEntityListBox();
}
private void UpdateEntityListBox()
{
lsbEntities.DataSource = _controlFacade.GetEntityTally();
lsbEntities.DisplayMember = "InstanceName";
}
Facade
private Scenario _scenario;
public ControlFacade()
{
_scenario = new Scenario();
}
public BindingList<AgStkObject> GetEntityTally()
{
BindingList<AgStkObject> entityTally = _scenario.EntityTally;
return entityTally;
}
lớp Kịch bản
private static BindingList<IAgStkObject> _entityTally = new BindingList<AgStkObject>();
public Scenario()
{
if (UtilStk.CheckThatStkIsAvailable())
{
UtilStk.StkRoot.OnStkObjectAdded += new IAgStkObjectRootEvents_OnStkObjectAddedEventHandler(TallyScenarioObjects);
UtilStk.StkRoot.OnStkObjectDeleted += new IAgStkObjectRootEvents_OnStkObjectDeletedEventHandler(TallyScenarioObjects);
}
}
private void TallyScenarioObjects(object sender)
{
List<AgStkObject> tallyOfStkObjects = UtilStk.GetRunningTallyOfAllStkObjects();
List<string> stkObjectNames = UtilStk.GetInstanceNamesOfStkObjects(tallyOfStkObjects);
foreach (string stkObjectName in stkObjectNames)
{
if (!SearchFlightUavTallyByName(stkObjectName))
{
if (!SearchLoiterUavTallyByName(stkObjectName))
{
if (!SearchEntityTallyByName(stkObjectName))
{
int i = stkObjectNames.IndexOf(stkObjectName);
_entityTally.Add(tallyOfStkObjects[i]);
}
}
}
}
}
tôi có thể thấy e lỗ thông hơi từ ứng dụng của bên thứ ba - điều này thêm một thực thể vào _entityList
như mong muốn, nhưng không được thêm vào lsbEntities
- tại sao?
Cảm ơn! Tôi chỉ muốn thử điều này. Tôi không chắc chắn tại sao - trong mã của tôi - một chủ đề khác đang được sử dụng? Tôi không xác định rõ ràng để sử dụng. Bạn có thể cho tôi biết lý do tại sao? – wulfgarpro
Không chỉ có các ví dụ của bạn đã giúp tôi hiểu bản chất của các chủ đề trong WinForms; Tôi đã học về Thread Pooling, Delegates và Event Handling. Cảm ơn bạn rất nhiều vì đã dành thời gian và công sức. Với cơ sở này, bây giờ tôi có thể hiểu rõ hơn về C# và phát triển phần mềm nói chung. – wulfgarpro
@WulfgarPro - trên một vài loại (BindingSource có thể?) Có một sự kiện được tăng lên khi ràng buộc không thành công. Nếu bạn đăng ký sự kiện này, bạn có thể nhận được nhiều thông tin hơn về các thông báo lỗi nếu không thì im lặng. –