У меня есть ListBox, привязанный к коллекции BindingList. Это отлично работает.BindingList и поведение ListBox
Мое единственное горе возникает, когда первый элемент входит в коллекцию. Поведение ListBox по умолчанию заключается в том, чтобы выбрать этот элемент, но это не вызывает событие SelectedIndexChanged. Я предполагаю, что это потому, что SelectedIndex изначально имеет значение null; при достижении чего-либо, кроме нулевого, индекс фактически не изменяется; скорее назначен. Как я могу остановить поведение по умолчанию при выборе (выделение) первого начального элемента, добавленного в ListBox?
Если мое предположение неверно, проследите какой-нибудь свет?
Update
Вот основные части моего кода до сих пор.
public UavControlForm()
{
InitializeComponent();
_controlFacade = new UavController.Facade.ControlFacade();
UpdateFlightUavListBox();
}
private void UpdateFlightUavListBox()
{
lsbFlightUavs.DataSource = _controlFacade.GetFlightUavTally();
lsbFlightUavs.DisplayMember = "Name";
}
private static BindingList<FlightUav> _flightUavTally = new BindingList<FlightUav>();
public BindingList<FlightUav> FlightUavTally
{
get { return _flightUavTally; }
}
public void AddFlightUav(double[] latLonAndAlt)
{
FlightUav flightUav = new FlightUav();
flightUav.Latitude = latLonAndAlt[0];
flightUav.Longitude = latLonAndAlt[1];
flightUav.Altitude = latLonAndAlt[2];
_flightUavTally.Add(flightUav);
UtilStk.InjectAircraftIntoStk(flightUav.Name);
flightUav.SetFlightDefaults();
PlayScenario();
}
Update:
Таким образом, установка lsbFlightUavs.SelectedIndex = -1
решает эту проблему. Вышеуказанный метод AddFlightUav()
вызывается из обработчика OnClick кнопки во второй форме из основной формы. Как я могу позвонить lsbFlightUavs.SelectedIndex = -1
из этой второй формы, когда возвращается метод AddFlightUav()
? Я знаю, что могу сделать ListBox статичным, но для меня это кажется плохой практикой. Что было бы более элегантным решением?
Вы можете разместить код, где вы назначаете DataSource из BindingSource и ListBox, и где вы добавить новый элемент? Кстати, SelectedIndex является int, поэтому он никогда не будет null: он инициализирует -1 – stuartd
@ Стюарт Данкелд, вы правы в том, что SelectedIndex является int. Сегодня я отправлю код позже. – wulfgarpro
У меня есть некоторые дальнейшие обсуждения здесь: http://social.msdn.microsoft.com/Forums/en/winforms/thread/6c90af6d-e1f9-4890-90a9-260abcfc1980 – wulfgarpro