Получение данных из метки в MessageBox

Я использую OpenFileDialog для открытия и чтения файла в моем приложении для отображения определенных данных. У меня есть несколько форм - 2/3 из которых мне нужно иметь возможность отображать значение, считанное из файла, в метку. На данный момент я только что жестко закодировал некоторые данные в метку и, используя метод Get Set, могу получить значение. Однако, когда я пытался получить значение метки при заполнении данных из файла, ничего не возвращается.

В Form1.cs:

internal string GetSetBarcode
{
    get
    {
        // Barcode label
        return this.label36.Text;
    }
    private set
    {
        this.label36.Text = value;
    }
}

Получить значение из файла:

// Currently working on a new method to populate data more appropriately as this is not the best, but it works for now.

string result = System.Text.Encoding.UTF8.GetString(box);
string r = Regex.Replace(result, "[^a-zA-Z0-9 .-]", string.Empty);

for (int i = 0; i < r.Length; i++)
{
    for (int b = 11; i < b; i++) // Product Code
    {
        label7.Text += r[i];
    }
}

В Barcode.cs:

Form1 f1 = new Form1();
MessageBox.Show(f1.GetSetBarcode); // For testing purposes... But this returns 0 :(

person lornasw    schedule 17.12.2013    source источник
comment
зачем создавать новую форму Form1()??   -  person har07    schedule 17.12.2013
comment
Пожалуйста, покажите, как вы заполняете этикетку данными из файла   -  person Sergey Berezovskiy    schedule 17.12.2013
comment
Убедитесь, что вы имеете в виду правильную метку (т. е. вы установили значение для label36.Text перед доступом к нему). Потому что я протестировал ваш сценарий, и он работает для меня.   -  person Ramashankar    schedule 17.12.2013
comment
Выглядит странно, и это не вся картина. Строка Form1 f1 = new Form1(); только создает новый экземпляр формы. Что же тогда вызывает получение значения из файла? Это в конструкторе формы? Вызывается методом находящимся в конструкторе? Я не вижу ничего, что могло бы привести к заполнению GetSetBarcode чем-либо, кроме значения по умолчанию (именно поэтому жесткое кодирование работает).   -  person DonBoitnott    schedule 18.12.2013


Ответы (3)


Mhh обычно вы не должны делать так, лучше не делайте этого. Вы должны видеть здесь. Возможно, у них есть решение для вас ;-)

how-to-access-winform-textbox-control-from- другой класс

person Mehdi Bugnard    schedule 17.12.2013

Я проверил ваш сценарий, и он работает для меня. Я думаю, ваша проблема заключается в том, что вы жестко кодируете данные в своем тесте на метке. Вы делаете это на Form_Load-Event? Поскольку событие загрузки происходит только после form.Show(); Если вы жестко кодируете текст метки в дизайнере или в конструкторе форм, он работает;)

надеюсь, я смог вам помочь ^^

person DJmRek    schedule 17.12.2013
comment
Пожалуйста, дайте мне знать, если вы нашли свою ошибку или нет ^^ - person DJmRek; 17.12.2013
comment
Да, если я жестко запрограммирую его с помощью дизайнера, он действительно работает! До сих пор не нашел способа обойти это, поэтому поиграю с другими вещами, вернусь к этому и, возможно, опубликую обновление :) - person lornasw; 18.12.2013
comment
Позвольте мне услышать, если у вас есть какие-либо другие проблемы;) - person DJmRek; 18.12.2013

Мне удалось найти решение, см. https://stackoverflow.com/a/21310270/2952390 (ответ на связанный вопрос, который я задавал ранее). Здесь он извлекает текст из поля со списком в метку в другой форме. Гораздо проще, чем я думал.

person lornasw    schedule 27.01.2014