Получить значение свойства из класса в Form2, и это значение было установлено в Form1 в C # - PullRequest
1 голос
/ 26 сентября 2011

Вот сценарий. Я хочу установить значение Server в Class1, я устанавливаю значение в Form1. Затем получите значение Server в Class1 в Form2. Вот что у меня есть.

class Class1
{
    private string server;

    public string Server
    {
        get { return server; }
        set { server = value; }
    }
}

//Form1 where i want to set the value of server
private void setBtn_Click_1(object sender, EventArgs e)
{
    Class1 sample = new Class1();
    sample.Server = serverTxt.Text;
}

//Form2 where i want to get the value of server that i've set in Form1
private void setBtn_Click_1(object sender, EventArgs e)
{
    Class1 sample = new Class1();
    string serVer = sample.Server;
}

Я знаю, что не могу иметь значение server, потому что я объявил новый экземпляр Class1. Но есть ли способ, которым я все еще могу получить значение Server в Form2, которое я установил в Form1?

Пожалуйста, пощади меня, я новичок в C #, заранее спасибо, ребята: D

Ответы [ 6 ]

2 голосов
/ 26 сентября 2011

Есть несколько альтернатив, но статический экземпляр Class1 будет проще.

В форме form1 объявить / создать статический экземпляр класса Class1

//Form1 where i want to set the value of server
public static Class1 sample=new Class1();
private void setBtn_Click_1(object sender, EventArgs e)
{
    sample.Server = serverTxt.Text;
}

и в форме 2,

//Form2 where i want to get the value of server that i've set in Form1
private void setBtn_Click_1(object sender, EventArgs e)
{
    string serVer = Form1.sample.Server;
}
1 голос
/ 26 сентября 2011

Вы можете отправить соответствующие данные в конструктор Form2 и инициализировать их из Form1 (передать данные при инициализации Form2 в Form1)

[EDIT] Вы также можете передать информацию через базу данных, в которой хранится этаданные или использование внешнего файла, к которому имеют доступ обе формы.

1 голос
/ 26 сентября 2011

Вы должны установить значение serverTxt.Text в Form1 равным Глобальной переменной (самый простой способ).Затем просто возьмите значение этой глобальной переменной в Form2

1 голос
/ 26 сентября 2011

Одним из решений этой проблемы является объявление свойства сервера в Calss1 как статического

class Class1
{
    public static string Server { get; set; }
}

, чтобы вы могли получить его значение между двумя формами

private void setBtn_Click_1(object sender, EventArgs e)
{
    Class1.Server = serverTxt.Text;
}

private void setBtn_Click_1(object sender, EventArgs e)
{
    string serVer = Class1.Server;
}

, используйте только этоесли вы, если у вас есть один сервер для всех экземпляров Class1

1 голос
/ 26 сентября 2011

Вы можете отправить его в конструкторе при создании второй формы. Примерно так тогда

class Class1
{
    private string server;

    public string Server
    {
        get { return server; }
        set { server = value; }
    }
}

//form 1
private void setBtn_Click_1(object sender, EventArgs e)
{
    Class1 sample = new Class1();
    sample.Server = serverTxt.Text;
    prevForm = sample;
}



//form 2
private void setBtn_Click_1(object sender, EventArgs e)
{
    Class1 sample = new Class1{ Server=prevForm.Server };
}

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

1 голос
/ 26 сентября 2011

Не только вы не можете этого сделать, но и в вашем коде после выполнения setBtn_Click_1 объект созданного вами типа Class1 пропал - это потому, что у вас есть только ссылка на него в методе, поэтому когда методвыполняет ссылка ушла!

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