Как вы устанавливаете значение переменной из другой формы? - PullRequest
0 голосов
/ 21 марта 2010

c # .Net 3.5 visual studio 2008, windows xp

У меня есть основная форма в проекте, при конкретном наборе обстоятельств создается другая форма и отображается для пользователя:

Form frmT = new frmTargetFolder(expName, this);
        frmT.Show();

Как видите, я передаю ссылку на новую форму из текущей.У меня вопрос: что я должен сделать с методом, чтобы он отображался в новой форме, то же самое для переменной?

Я пытался определить функции как публичные, но я не могу показатьсячтобы получить к ним доступ, я также написал метод Get и Set для переменной, опять же, как мне представить эти функции и методы для других форм?

public void hit()
    {
        MessageBox.Show("hit it");
    }


bool setOverRide
    {
        get
        {
            return OverRide;
        }
        set 
        {
            OverRide = value;

        }
    } 

Основная форма называется frmDataXfer, а форма - формакоторый я пытаюсь вызвать функции и методы frmDataXfer, называется frmTargetFolder, экземпляр которого создается в frmDataXfer и упоминается как frmT.

Спасибо, R.

Ответы [ 4 ]

1 голос
/ 21 апреля 2011

здесь уже обсуждается что-то похожее на ваш вопрос ..

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

Простой пример:

class Test : Form
{
    ___public int variable = 10; // visible!
    ___public Test() {}
}

Это может помочь в дальнейшем.

0 голосов
/ 21 марта 2010

Ваше setOverride свойство не помечено public. Помимо того, что свойства не должны называться таким образом (setOverride звучит как имя метода, а не свойства), модификатор доступа по умолчанию для членов класса - private. Вам необходимо добавить модификатор public к всем участникам, которых вы хотите сделать общедоступными.


Edit:

Снова глядя на код, проблема явно здесь:

Form frmT = new frmTargetFolder(expName, this);
frmT.Show();

При написании этого вы получите только те методы / свойства, которые являются членами класса Form. Это не относится ни к одному из членов, которые вы добавили в определенный класс формы. Ваш код должен быть написан как:

frmTargetFolder frmT = new frmTargetFolder(expName, this);
frmT.Show();

Если вы объявите его как правильный тип, тогда вы можете кодировать новые свойства.

0 голосов
/ 21 марта 2010

Просто помните, что формы - это, прежде всего, классы, как и любые другие, они просто наследуются от System.Windows.Forms.Form, чтобы придать ему специальные функции интерфейса.

Итак, как говорится, любое поле, свойство или метод public (или internal в том же проекте) доступны, если у вас есть экземпляр объекта.

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

0 голосов
/ 21 марта 2010

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

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