Мой Scenerio выглядит следующим образом:
Во время выполнения я привязываю ToolStripComboBox к массиву структуры:
cbxTimes.ComboBox.DataSource = PlayTimeLengths;
cbxTimes.ComboBox.DisplayMember = "Description";
cbxTimes.ComboBox.ValueMember = "Minutes";
DropDownStyle
из ToolStripCombobox
устанавливается в DropDown
.
Все работает нормально, я могу выбрать значения из выпадающего списка и написать текст в элементе управления.
Однако я хотел запретить пользователю нажимать некоторые элементы управления и чередовать свойство Text, когданажаты некоторые другие элементы управления.
Я пытаюсь выполнить это в событии KeyPress
:
private void cbxTimes_KeyPress(object sender, KeyPressEventArgs e)
{
var cbxSender = ((ToolStripComboBox)sender).ComboBox;
string S = cbxSender.Text;
//some operations on the S variable
cbxSender.Text = S;
e.Handled = true;
} // breakpoint here shows that cbxSender.Text is not changed to S!
Таким образом, свойство Text не было изменено, но я не получил никаких исключений.Однако, если я продолжу программу (я выйду из процесса отладки), я увижу, что свойство Text изменилось - чтобы быть более конкретным.Я вижу текст из S внутри элемента управления.
Теперь представьте, что я нажимаю любую клавишу во второй раз, и снова я нахожусь в отладчике в том же событии:
private void cbxTimes_KeyPress(object sender, KeyPressEventArgs e)
{
var cbxSender = ((ToolStripComboBox)sender).ComboBox;
string S = cbxSender.Text; // this time breakpoint is here
//some operations on the S variable
cbxSender.Text = S;
e.Handled = true;
} // breakpoint here shows that cbxSender.Text is not changed to S!
Но на этот раз я поставил точку останова во второй строке, и после изучения свойства Text я вижу, что оно все еще не изменилось.Несмотря на то, что я изменил его в первый раз, когда событие было запущено, и измененный текст виден в элементе управления.Но в отладчике я вижу другое значение, я вижу значение, которое было установлено в начале.Значение, которое принадлежит массиву структур.
ТАК что я могу сделать, чтобы преодолеть эту проблему?