C #, получить (получить или прочитать) значения textBox в статическом методе? - PullRequest
0 голосов
/ 12 августа 2011

У меня есть форма (form1), которая имеет текстовое поле (textBox1) У меня есть класс, который имеет метод "public static string getValue ()"

как я могу прочитать значение textBox1 в методе getValue () ??

вот мой код

namespace MyProgram
{
    public partial class Form1: Form
    {
      ---------------------------------
      ---------------------------------
      ---------------------------------
    }
}

другой класс

namespace MyProgram
{
    class values
    {

        public static string getValues()
        {

            string v;
            v = ------get value from textBox1 in Form1
            return v;
        }

    }
}

в эту структуру встроено полное программное обеспечение, поэтому я надеюсь, что в C # есть какой-то стандартный способ получить эти значения в методе getValue ()

Ответы [ 4 ]

2 голосов
/ 12 августа 2011

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

1 голос
/ 12 августа 2011

Вы можете создавать, показывать и удалять форму внутри статического метода. Пример:

public static string GetValues()
{
    string value = null;

    using (var form = new Form1())
    {
        DialogResult result = form.ShowDialog();

        if (result == DialogResult.OK)
        {
            value = form.textBox1.Text;
        }
    }

    return value;
}

Блок using обеспечивает освобождение ресурсов, выделенных для формы. ShowDialog показывает форму в виде модального диалога.

Хотя это работает для простых диалоговых окон, это, вероятно, не то, что вы хотите делать в каждом случае. Метод будет блокировать текущий поток, пока пользователь не закроет форму. Посмотрите на другие приложения и пример кода. Как писал @Dan Abramov, Пересмотрите свой дизайн.

1 голос
/ 12 августа 2011

Вы должны создать новый объект Form1 и получить значение.Или же добавьте делегат в form1 и вызовите его из getValue, чтобы возвращаемое значение делегата было значением текстового поля.

0 голосов
/ 12 августа 2011
foreach(Control c in Form1.Controls) {
     if(c.getType() == TextBox) {
            TextBox tb = (TextBox)c; 
            string value = tb.Text;
     }

}

Но почему бы вам просто не прочитать значение из формы?

Textbox1.Text

Рассмотрим принцип KISS!

...