Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » C# Как получить доступ к обьекту?

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

xtrimz

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я новичок в СШарпе, поэтому (не смотря на наличие интернета, гугла и кучи книжек\учебников по шарпу и дот нету) не могу найти решение такой проблемы:  
 
Суть в следующем - нужно в основной форме изменить содержание TextBox.Text из другого класса. Т.е. например, есть у меня класс, который что нибудь считает, как закончил считать - должен вывести текст в форму. У меня никак не получается...  
 
100% есть простой и легкий способ это сделать (должен быть ). Либо он такой простой что о нем никто не пишет, либо... он очень сложный  
 
Итог: как менять содержание элементов интерфейса из всяких побочных классов?  
 
Помогите пожалуйста
 
P.S.
-=-=-=-=-=-=-=-=-=-=-
Пробовал разные способы, мозг отключился после того, как дошел до этого
старт проги:  
[STAThread]  
static void Main()  
{  
  Form1 mainForm = new Form1();  
  Application.EnableVisualStyles();  
  Application.Run(mainForm);  
}  
т.е. создется обьект mainForm типа(класса) Form1()  
как мне из Другого класса обратиться именно к обьекту mainForm ?  
если я из другого класса вызываю  
Form1 mainForm = new Form1();  
то получаю Вторую копию, манипуляции с которой мне нафик не нужны.  
-=-=-=-=-=-=-=-=-=-=-

Всего записей: 123 | Зарегистр. 12-01-2005 | Отправлено: 15:56 23-07-2005
TheChampion

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xtrimz
По умолчанию элементы интерфейса имеют доступ private. Заменить на public и всего делов.

Всего записей: 656 | Зарегистр. 25-06-2004 | Отправлено: 16:24 23-07-2005
xtrimz

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ставлю public текстбоксу. Теперь я могу напрямую его изменять (что конечно плохо) из того класса в тотором я вызвал основную форму, т.е. из Main() (см.код вызова выше).  
Но мне надо иметь доступ к этому конкретному экземпляру формы (она-же основное окно программы) из других классов.  
Как мне к обратится к этому экземпляру (а не создавать новый)?
 
Добавлено:
Конкретнее:
 
Вход в программу:
-=-=-=-=-=-
static class Program
    {
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.Run(new Form1());
        }
    }
-=-=-=-=-==-
 
часть кода формы (без части которая автоматом составляется)
-=-=-=-=-==-
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            Button myButton = new Button();
            myButton.ChangeText("blablabla");
        }
    }
-=-=-=-=-=-
 
класс который вызывается после нажатия кнопки на форме (для примера)
-=-=-=-=-=-=-
    class Button
    {
        public void ChangeText(string newText)
        {
            ????
        }
    }

Всего записей: 123 | Зарегистр. 12-01-2005 | Отправлено: 16:32 23-07-2005
distance

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xtrimz
Если я правильно понял проблему, то можно воспользоваться делегатом.
 

Код:
 
namespace YourApp
{
    public delegate void UserAction(object sender, EventArgs e);
 
    public class Main Form : Form
    {
        // обработчик кнопки
        void buttonClick(object sender, EventArgs e)
        {
            DialogForm dlg = new DialogForm();
     
            // подписываемся на получение события
            dlg.myAction += new UserAction(UserActionDelegate);
     
            dlg.ShowDialog();
        }
     
        // обработчик события 'UserAction'
        void UserActionDelegate(object sender, EventArgs e)
        {
            DialogForm dlg = (DialogForm) sender;
            // ...
        }
    }
 
    // другой класс
    public class DialogForm : Form
    {    
        public event UserAction myAction;
 
        public function smth_handler(object sender, System.EventArgs e)
        {
            // когда нужно, дергаем эвент
            if (this.myAction)
                this.myAction(this, e)
        }
    }
}
 


Всего записей: 878 | Зарегистр. 28-03-2004 | Отправлено: 02:44 24-07-2005
xtrimz

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
distance
Спасибо, помогло

Всего записей: 123 | Зарегистр. 12-01-2005 | Отправлено: 19:28 24-07-2005
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » C# Как получить доступ к обьекту?


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru