2013-06-07 5 views
0

Я использую управление datarepeater, версия 10.0 в visual studio 2010. CurrentItemIndex, кажется, обновляется до того, как текстовое поле покинет событие, когда я использую мышь для перехода к следующей строке. Поэтому, когда я извлекаю значение из текстового поля, я не понимаю, с чем связан ItemIndex. Этого не происходит, когда клавиатура используется для перехода к следующей строке. Любой видит это. Версия 9.0 на datarepeater действительно работала таким образом.VB Datarepeater control в Visual Studio 2010 - currentItemIndex обновлен до появления текстового поля при использовании мыши

ответ

0

Чтобы ответить вам прямо, вот некоторые фрагменты C#. Я предполагаю, что у вас уже есть объект TextBox (или другой элемент управления), который подразумевается в вашем вопросе. Я также предполагаю, что вы находитесь внутри обработчика события (например, TextChanged). Если вы еще этого не сделали, вам нужно использовать параметр отправителя объекта, а не объявленный администратором TextBox (например, не использовать TextBox1 или похожий объект), потому что он будет просто ссылаться на элемент управления шаблоном DataRepeaterItem, а не на индивидуальное управление для строки данных, вы заинтересованы в.

TextBox itemTextBox = sender as TextBox; 

    //* DataRepeaterItem is a control which contains other controls for each data "row" 
    DataRepeaterItem drItem = itemTextBox.Parent as DataRepeaterItem; 

    //* Retrieve the particular data item 
    int idx = drItem.ItemIndex; 

    //* If DataRepeater is bound to a BindingSource, for example, 
    //* one can retrieve the underlying data item 
    object dataItem = myBindingSource.List[idx]; 

Я испытал различные ошибки и проблемы с управлением фокусом и данных обновлений с DataRepeater. Нет гарантии того, какой именно порядок срабатывает: Оставьте, LostFocus, CurrentItemChanged и т. Д. И, как вы заметили, он отличается в зависимости от того, используете ли вы мышь в DataRepeater или в/из другого элемента управления в форме или используете клавиатура. Возможно, действительно существует установленный алгоритм, но я наблюдал различия в документации. Ситуация осложняется, когда инфраструктура обработки данных (например, BindingSource, CurrencyManager) также подписывается на эти события и обновляет все, что не подходит, из того, что вы ожидаете или чего хотите. У меня нет предложения о том, как справиться с этими проблемами, но я надеюсь, что приведенный выше код может по крайней мере получить доступ к конкретному индексу и данным для вашего элемента управления.

+0

Спасибо, это отлично сработало для чего Я делал. –

+0

@Rick: Не могли бы вы отметить вопрос как ответ? Благодарю. –

 Смежные вопросы

  • Нет связанных вопросов^_^