Golden Basim Ответов: 1

Как изменить значение и свойства элементов управления devexpress с помощью внешней функции


привет,

как изменить управляющее значение devexpress и свойства существуют в переменной форме ( неизвестно ) с помощью публичной функции в другом классе ..
экс:-

у меня есть 3 элемента управления devexpess (label , simple button , ComboBoxEdit) и 5 форм, содержащих эти 3 элемента управления (с одинаковыми именами)..

кроме того , у меня есть еще один класс, который содержит функцию, как изменить значение 3 элементов управления и приличия, когда я вызываю эту функцию в каждой форме (когда это необходимо)?

Что я уже пробовал:

я попробовал это сделать:

public static void  Search<T>(this XtraForm frm, IQueryable<T> query, BindingSource bindingsource, int currentPage = 1) where T : class
        {
frm.Controls["PAG_CountPerPage"].EditValue = "";
frm.Controls["PAG_CountPerPage"].SelectedText = "";
}


но элемент управления не содержит определения для EditValue , SelectedText ,....

Gerry Schmitz

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

Golden Basim

мне жаль, что я не смог объяснить, чего хочу .. то, что я хочу, это именно так

 frm.Controls["PAG_CountPerPage"].EditValue = ""; 

1 Ответов

Рейтинг:
2

Ralf Meier

"frm.Controls" предоставляет вам объект, а не реальный контроль, который вы хотите иметь.
Таким образом, вы должны привести его, если тип совпадает, в правильный тип, чтобы получить/получить доступ к свойствам, которые вы хотели бы иметь.


Пример кода для этого :

Label myLabel;
if (this.Controls("Label1").GetType == typeof(Label))
    myLabel = this.Controls("Label1");

ComboBox myCombobox;
if (this.Controls("ComboBox1").GetType == typeof(ComboBox))
    myCombobox = this.Controls("ComboBox1");

Теперь вы можете получить доступ к члену "Label1" из коллекции элементов управления (текущей формы) с помощью "myLabel"
То же самое и с "микомбобоксом".
Конечно, вы используете разные элементы управления, но процесс изготовления один и тот же.

Если одна из этих переменных (myLabel или myCombobox) не является ничем, то внутри коллекции элементов управления вашей формы такого члена нет.


Golden Basim

пожалуйста , не могли бы вы показать, как я могу это сделать ?

Golden Basim

я пытался это сделать, но у меня ничего не вышло

ComboBoxEdit PAG_CountPerPage = frm.Controls["PAG_CountPerPage"] as ComboBoxEdit;
            PAG_CountPerPage.SelectedIndex = 3;

Ralf Meier

Ваш код представляет собой смесь VB и C# ...
На данный момент у меня нет версии Visual Studio для использования.
Кроме того, я недостаточно знаком с C#, чтобы дать вам "быстрый и грязный" пример.
Позже (вечером) Я создам для вас пример ...

Golden Basim

спасибо
также я попробовал этот код, чтобы проверить, есть ли у from проблема или нет >>


frm.Close();



и

frm.text = "change text";

и код не запускается , ничего не происходит, никаких ошибок не появляется

Ralf Meier

Я добавил/пример кода ...

Golden Basim

Ошибка CS1955 не вызываемый элемент управления.Элементы управления " нельзя использовать как метод.

Ralf Meier

немного больше информации было бы полезно - Так что покажите полный соответствующий код. Используйте виджет "улучшить вопрос", чтобы улучшить свой вопрос с помощью этих частей кода ...