Отключить элементы управления для определенных элементов в элементе управления DataRepeater - PullRequest
1 голос
/ 17 декабря 2009

Я использую элемент управления DataRepeater из пакета Visual Basic Power Pack в моем приложении C # Winforms. Элемент управления не связан, работает в VirtualMode.

Я показываю несколько элементов в этом элементе управления. В зависимости от определенных критериев я хочу отключить кнопку в элементе управления.

Я попробовал следующее в событии _DrawItem повторителя данных:

private void dataXYZ_DrawItem(object sender, DataRepeaterItemEventArgs e)
{
    int Item=e.DataRepeaterItem.ItemIndex;
    dataXYZ.CurrentItem.Controls["buttonSomething"].Enabled = SomeFunc(Item);
}

Что происходит, если кнопка включена или отключена в зависимости от того, каким должен быть последний элемент в элементе управления.

Есть идеи, как управлять состоянием включения для каждого элемента в отдельности?

Спасибо

1 Ответ

3 голосов
/ 02 февраля 2011

Если вы хотите зациклить ваши элементы переноса данных, вы можете сделать что-то вроде этого:

            //Store your original index
            int intOldIndex = dataRepeater1.CurrentItemIndex;

            //Loop through datarepeater items and disabled them
            for (int i = 0; i < dataRepeater1.ItemCount; i++)
            {
                //Just change the CurrentItemIndex and the currentItem property will get the element from datarepeater!
                dataRepeater1.CurrentItemIndex = i;
                dataRepeater1.CurrentItem.Enabled = false;

                //You can access some controls in the current item context
                ((TextBox)dataRepeater1.CurrentItem.Controls["txtName"]).Text = "My Name";

                //If your textbox is inside a groupbox, for example, 
                //you'll need search the control because it is inside another
                //control and the textbox will not be accessible
                ((TextBox)dataRepeater1.CurrentItem.Controls.Find("txtName",true).FirstOrDefault()).Text = "My Name";
            }

            //Back your original index
            dataRepeater1.CurrentItemIndex = intIndex;
            dataRepeater1.CurrentItem.Enabled = true;

Надеюсь, это поможет!

С наилучшими пожеланиями!

...