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


Автор: bankuss 27.3.2006, 11:00
Есть на форме листбокс, значит внутри класса Form1 это бокс прекрасно видится и с ним можно работать.
Но потребовалось сделать класс. Из этого класса нужно обратиться к этому листбоксу. В этом классе листбокс не виден, что сделать? В книжках про это как то скупо написано... методом "научного тыка" ничего не получается smile а ведь наверняка все просто...

Автор: ivashkanet 27.3.2006, 11:10
А какой тип доступа к ListBox, наверняка private.
Поставь его в public.

Автор: _hunter 27.3.2006, 11:13
Form1.листБокс?

Автор: bankuss 27.3.2006, 11:18
ivashkanet, ставил в паблик! эти способы были проверены в первую очередь smile но без результатно..

Автор: _hunter 27.3.2006, 11:34
bankuss, как я писал делал?

Автор: ivashkanet 27.3.2006, 11:39
bankuss, приведи код, чтобы мы не гадали smile

Автор: Exception 27.3.2006, 11:44
Кстати, в public ставить не надо. Ставь в internal.
Добавлено @ 11:46
Я надеюсь, ты к нему через instance обращаешься?

Автор: bankuss 27.3.2006, 11:49
Код

public class Сообщение
    {
        public static void Записать(string сообщение)
        {
            Listbox1.Items.Add(сообщение);
        }
    }


ну вот примерно такой код smile Form1.Lixtbox1 - не выходит
вот если сделать экземпляр формы:
Код

Form1 f = new Form1
f.Listbox1.Items.Add("ququ");

то бокс видит, но ведь это экземпляр! а мне надо к базовому классу обратится.

Автор: Exception 27.3.2006, 12:01
Не понял. Конечно, нужно через экземпляр - форма - это же конкретный объект! Почему ты не хочешь через экземпляр-то обращаться?

Автор: _hunter 27.3.2006, 12:02
в смысле? к какому еще базовому классу?

Автор: bankuss 27.3.2006, 12:07
Код

Form1 f = new  Form1();
f.OutList.Items.Add(сообщение);


ну да, такой код ошибок не выдает. но и в листбоксе ничего не появляется...сообщение уходит куда-то smile
что еще надо сделать...

Автор: Exception 27.3.2006, 12:25
Йо-майо smile
Ты вообще когда экземпляр формы первый раз создаешь? Вот к нему и обращайся. А вообще, прежде, чем что-то писать, подучи теорию. Нехорошо так из места в карьер, не понимая базовых принципов работы .NET и Windows Forms в частности.

Автор: ivashkanet 27.3.2006, 12:28
Цитата(bankuss @ 27.3.2006, 12:07 Найти цитируемый пост)
Form1 f = new  Form1();

Ты добавляешь "Сообщение" к новому объекту f, он ни вкое случае не указывает на твою форму (это её (формы) родная сестра-близнец).
Можно при создании твоего класса передать в конструктор твою форму:
Код

public class Сообщение    
    {    
        Form1 F;
        
        public static void Сообщение(Form1 fForm)    
        {    
       F = fForm;
        }
        
        public static void Записать(string сообщение)    
        {    
            F.Listbox1.Items.Add(сообщение);    
        }    
    }

Цитата

Йо-майо
Ты вообще когда экземпляр формы первый раз создаешь? Вот к нему и обращайся. А вообще, прежде, чем что-то писать, подучи теорию. Нехорошо так из места в карьер, не понимая базовых принципов работы .NET и Windows Forms в частности.


Полностью согласен.

Автор: mr.DUDA 27.3.2006, 12:52
Тут не .NET и WinForms учить надо, а основы ООП... smile

Автор: bankuss 27.3.2006, 12:57
Exception, принципов много, сразу все не охватишь. да и книжка под рукой не дает полной картины, хорошо хоть инет есть smile
кстати код приведенный выше не работает.. пару ошибок я отловил. но в целом нужного результат не добился.
Добавлено @ 13:00
mr.DUDA, основы ООП тут ничего не дадут, тут как раз уже тонкости...

Автор: ivashkanet 27.3.2006, 13:12
Цитата(bankuss @ 27.3.2006, 12:57 Найти цитируемый пост)
mr.DUDA, основы ООП тут ничего не дадут, тут как раз уже тонкости...

Никаких тонкостей, как раз основы!!!

А как ты свой класс Сообщение создавал?
Нужно так:
Код

Сообщение сообщMes = new Сообщение(this);


this это и есть твоя форма которая создает класс Сообщение.

Автор: bankuss 27.3.2006, 13:18
ivashkanet, да-да нашел ужо smile
из-за this как раз и не получалось...

а насчет ООП - здесь привычка нужна, а у меня она еще не выработалась. Хотя основы знаю.

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