를 업데이트하지 나는 BindingList
에 바인딩 된 ListBox
있습니다. BindingList
은 타사 응용 프로그램에서 이벤트를 발생시킬 때 만들어집니다. BindingList
이 바운드 된 것을 볼 수 있지만 아무 것도 ListBox
에 들어갑니다. 내 자신의 사용자 지정 형식 중 일부와 동일한 논리를 사용하고 일반적으로 잘 작동합니다.는 바인딩이 결합 된 목록 상자
Form 클래스
private Facade.ControlFacade _controlFacade;
public UavControlForm()
{
InitializeComponent();
_controlFacade = new UavController.Facade.ControlFacade();
UpdateEntityListBox();
}
private void UpdateEntityListBox()
{
lsbEntities.DataSource = _controlFacade.GetEntityTally();
lsbEntities.DisplayMember = "InstanceName";
}
외관 클래스
private Scenario _scenario;
public ControlFacade()
{
_scenario = new Scenario();
}
public BindingList<AgStkObject> GetEntityTally()
{
BindingList<AgStkObject> entityTally = _scenario.EntityTally;
return entityTally;
}
시나리오 클래스
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]);
}
}
}
}
}
나는 전자를 볼 수 있습니다 타사 응용 프로그램에서 화재가 발생하면 원하는대로 엔터티를 _entityList
에 추가하지만 아무런 내용도 추가되지 않습니다. lsbEntities
- 이유는 무엇입니까?
스레드와 거의되어 좋은 친구 (예 : 데이터 바인딩하지 윈폼에로) "관찰자"패턴을
고마워! 나는 이것을 시험해보기위한 것이다. 나는 왜 내 코드에서 다른 스레드가 사용되고 있는지 잘 모르겠다. 나는 명시 적으로 사용하기 위해 정의하지 않는다. 왜 그런지 말해 줄 수 있니? – wulfgarpro
예제를 통해 WinForms의 스레드 특성을 이해할 수있을뿐만 아니라, 스레드 풀링, 대리인 및 이벤트 처리에 대해 배웠습니다. 당신의 시간과 노력에 감사드립니다. 이 기초를 통해 이제 C# 및 소프트웨어 개발 전반에 대한 폭 넓은 이해를 얻을 수 있습니다. – wulfgarpro
@ WulfgarPro - 몇 가지 유형 (BindingSource일까요?)에는 바인딩이 실패 할 때 발생하는 이벤트가 있습니다. 이 이벤트에 가입하면 침묵하는 오류 메시지에 대한 많은 정보를 얻을 수 있습니다. –