Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > Обращение к элементам формы


Автор: Syrex 20.12.2006, 10:38
Создал проект WinApp и назвал его Main
На форму поместил TextBox
Далее создал свой класс  MyClass и переменную Text

Вопрос: Как присвойить значение TextBox переменной Text

(В Билдере можно было так: 
Код
Text=Main->TextBox->Text;
, но в C# так невозможно)

Автор: reloni 20.12.2006, 10:48
Переменная Text типа string? Тода:
Код

Text = textBox1.Text;

Если я правильно понял вопросsmile
ps textBox1 - переменная типа TextBox ессно.

Автор: Syrex 20.12.2006, 10:55
что значит ps textBox1 - переменная типа TextBox ессно.

Добавлено @ 10:59 
Main:
Код

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace Escort_Sharp
{
    public partial class MainF : Form
    {
        public MainF()
        {
            InitializeComponent();
        }
    }
}


MyClass:
Код

using System;
using System.Collections.Generic;
using System.Text;

namespace Escort_Sharp
{
    class Check
    {
        public string Text;
        public Check()
        {
            Text=  //что тут написать?
        }
    }
}

Автор: ivashkanet 20.12.2006, 11:01
Syrex, обращение идет изнутри класса MyClass?
Тогда он должен хранить в себе http://forum.vingrad.ru/index.php?showtopic=52713
либо ссылку на форму можно объявить статической (static) и обращаться из любого места, но я этот вариант не советую, хотя он и ближе к Делфям  smile

Добавлено @ 11:06 
Код

using System;
using System.Collections.Generic;
using System.Text;
namespace Escort_Sharp
{
    class Check
    {
        public string Text;
        public Check(string text)
        {
            [S]Text=  //что тут написать?[/S]
            Text = text;
        }
    }
}


Использование из класса MainF:
Код

Check ck = new Check(this.TextBox.Text);

P.S. Так как мы создаем класс Check из класса MainF, то this --- указатель на него самого smile

Автор: Syrex 20.12.2006, 11:20
А как будет выглядеть этот же пример, если класс Main изменить так:

Код

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace Escort_Sharp
{
    public partial class MainF : Form
    {
        public MainF()
        {
            InitializeComponent();
        }
        public string MyText
        {
            get { return this.TextBox.Text; }
        }

    }
}
 - вроде так правильней?!

Автор: ivashkanet 20.12.2006, 11:36
Цитата(Syrex @  20.12.2006,  10:20 Найти цитируемый пост)
вроде так правильней?!

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

В любом случае дизайнер форм открывает TextBox напоказ.

Но если хочешь ---- 
Код

Check ck = new Check(this.MyText);


ЗЫ this можно опустить, но он мне просто нравится smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)