Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Обратиться от класса к объекту


Автор: N1ko 25.6.2009, 15:02
Код

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

namespace fff
{
    public partial class Form1 : Form
    {
        Hello hello = new Hello();
        public Form1()
        {
            InitializeComponent();
            textBox1.Text = hello.Hel();
        }
    }
    public class Hello
    {
        public string Hel()
        {
           return "Hello";  
        }
    }
}


А можно ли как то сразу из второго класса(Класса Hello) обратиться к textbox1 и присвоить его тексту какое нибуть значение?

Автор: Bogdan1024 25.6.2009, 15:15
Код

    public class Hello
    {
        public void Hel(TextBox tb)
        {
tb.Text = "Hello";
        }
    }

Автор: N1ko 25.6.2009, 16:06
А как обратиться к конкретному объекту, который уже существует textBox1?

Автор: Partizan 25.6.2009, 16:48
N1ko, Bogdan1024 написал же пример кода

Код

using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace fff
{
    public partial class Form1 : Form
    {
        Hello hello = new Hello();
        public Form1()
        {
            InitializeComponent();
            hello.SetText(textBox1);
        }
    }
    public class Hello
    {
        public void SetText(TextBox tb)
        {
            if (tb == null)
                return;

             tb.Text = "Hello";  
        }
    }
}

Автор: ДобренькийПапаша 25.6.2009, 16:49
textbox объявите как static. И во втором классе обращайтесь по имени класса, содержащего ваш текстбокс:
Код

Form1.textbox1.Text="Something";


Автор: Partizan 25.6.2009, 17:07
ДобренькийПапаша, плохой вариант...очень плохой...

Автор: ДобренькийПапаша 25.6.2009, 18:45
Чем плохой? Плохой вариант, это создавать экземпляры класса просто так...

p.s. Вот, нашёл, позволю себе процитировать Эндрю Троелсена, - "статические члены являются элементами, которые по мнению разработчика типа оказываются "слишком банальными", чтобы создавать для них экземпляры типа".

1)Создавать по любой причине экземпляры, это накладно для производительности, да и стиль по-моему не очень хороший.
2)Создание экземпляра, это умножение сущностей... а зачем это надо без веских причин?

Автор: Partizan 25.6.2009, 23:46
ДобренькийПапаша, один текстбокс на все экземпляры? ))) ага-ага )))

1. создаём новый экземпляр формы и опа - в новом экземпляре в текстбоксе старый текст незнамо откуда...очень такой хороший user-experience будет =)

2. захотелось нам поменять формочку - удалили текстбокс....и го по всем двадцати пяти файлам удалять референсы на него и вобще думать на что заменять =)

Да и вообще это нарушение инкапсуляции....

Автор: Экскалупатор 25.6.2009, 23:51
Partizan, +1

Автор: ДобренькийПапаша 26.6.2009, 06:25
А я полагал, что там один экземпляр...
Ладно, у него что-то учебное, так что по-барабану.

p.s. У меня есть такая ситуация, когда я текст из текстбокса одной формы должен был использовать в другой... но там класс очень большой и много полей, я сделал статиком текстбокс, по вышеизложенным причинам... (ну и так как знаю что эта форма одна и второй быть не может).

Или вы в любом случае не рекомендовали бы делать статиком какие бы то ни было элементы на формах?

Автор: Partizan 26.6.2009, 10:16
В любом случае.

Автор: ДобренькийПапаша 26.6.2009, 10:33
Это касается только элементов на форме?

Автор: Partizan 26.6.2009, 11:03
ДобренькийПапаша, это касается и многого другого...но это совсем не значит, что использование static вообще надо исключить из употребления ;)

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