güncellememesi bir BindingList
bağlı olduğu bir ListBox
var. Bir üçüncü taraf uygulaması bir olayı artırdığında BindingList
oluşturulur. Ben BindingList
doğru bağlanmış olan görebilirsiniz ... ama hiçbir şey ListBox
girer. Aynı mantığı kendi özel türlerimle kullanmıştım ve genelde çok iyi çalışıyor.BindingList bağlı ListBox
Formu sınıf
private Facade.ControlFacade _controlFacade;
public UavControlForm()
{
InitializeComponent();
_controlFacade = new UavController.Facade.ControlFacade();
UpdateEntityListBox();
}
private void UpdateEntityListBox()
{
lsbEntities.DataSource = _controlFacade.GetEntityTally();
lsbEntities.DisplayMember = "InstanceName";
}
Cephe sınıf
private Scenario _scenario;
public ControlFacade()
{
_scenario = new Scenario();
}
public BindingList<AgStkObject> GetEntityTally()
{
BindingList<AgStkObject> entityTally = _scenario.EntityTally;
return entityTally;
}
Senaryo sınıf
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]);
}
}
}
}
}
Ben e görebilirsiniz Üçüncü taraf uygulamasından ateş havalandırma - bu istenilen şekilde _entityList
için bir varlık ekler, ancak noothing lsbEntities
eklenir - neden?
konu ve nadiren olan iyi arkadaş (veri bağlayıcı Win olduğu gibi) "gözlemci" desen
Teşekkürler! Sadece bunu denemek üzereyim. Eminim neden - kodumda - farklı bir iplik kullanılıyor? Ben açıkça bir tane kullanım için tanımlamıyorum. Bana nedenini söyleyebilir misin? – wulfgarpro
Sadece örnekleriniz, WinForms'daki iş parçacığının doğasını anlamama yardımcı oldu; İş parçacığı havuzu, delegeler ve olay işleme hakkında öğrendim. Zaman ve çaba için çok teşekkür ederim. Bu temel ile şimdi C# ve genel olarak yazılım geliştirme daha geniş bir anlayış kazanabilir. – wulfgarpro
@WulfgarPro - Birkaç türlerinde (? BindingSource belki) başarısız bağlanma sırasında yükseltilir bir olay yoktur. Bu etkinliğe abone olursanız, aksi halde sessiz olan hata mesajları hakkında daha fazla bilgi edinebilirsiniz. –