Доступ к нестатическому свойству combbox в статическом методе - PullRequest
1 голос
/ 02 апреля 2010

У меня есть один комбинированный список в форме окна, и у меня есть один метод, который объявлен со статическим, как private static DataTable ParseTable(HtmlNode table) Теперь я хочу использовать комбобокс в этом методе для использования свойства combobox, но я не могу получить доступ ни к какому свойству combobox или самого combobox. .Если я сделал объявление в поле со списком как статическое, тогда к нему можно получить доступ в этом статическом методе. Но любой альтернативный способ получить доступ к свойству поля со списком в этом статическом методе, потому что я не хочу делать объявление в поле со списком как статическое.

Ответы [ 4 ]

1 голос
/ 02 апреля 2010

Вы можете передать комбобокс в качестве параметра для вашего метода. Зачем вам нужен метод ParseTable как static ?

Обновление : Вы не можете получить доступ к нестатическим членам класса в статическом контексте. Поэтому единственное, что вы можете сделать, если вам все еще нужен статический метод, это каким-то образом передать ваш комбинированный список этому методу, используя параметры метода.

0 голосов
/ 02 апреля 2010

Вы не сможете просто получить доступ к члену экземпляра из статической функции. Один из способов получить доступ - передать управление в функцию в качестве аргумента. Рассмотрим этот пример.

private void button1_Click(object sender, EventArgs e)
{
    Form1.DoSomething(textBox1);
}

public static void DoSomething(TextBox textbox)
{
    textbox.Text = DateTime.Now.ToString();
}
0 голосов
/ 02 апреля 2010

Вы можете получить доступ к комбинированному списку, передав «this» статическому методу и получив доступ к любому элементу, который вам нужен, через «this».

0 голосов
/ 02 апреля 2010

Нет необходимости использовать статический метод ParseTable в форме. Удалите статические из этой функции, если вы хотите, чтобы эта функция взаимодействовала с элементами управления в форме.

После прочтения комментариев улучшение производительности не будет, если у вас будет только одна форма. Если у вас есть несколько форм, вызывающих этот статический метод, то ParseTable следует переместить в отдельный статический класс.

Если вы загружаете десять или более полей со списком, используя этот метод ParseTable, тогда я предлагаю вам использовать предложение Энтони Пеграма и Эндрю Беззуба и при необходимости передать элемент управления ComboBox. Я бы не стал передавать эту (форму), потому что она обычно создает «некрасивый» неуправляемый код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...