Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.02.2015, 19:30   #1
Razor007
Пользователь
 
Регистрация: 04.02.2015
Сообщений: 16
Восклицание WinFormsApp Доступ к объекту с другого класса

Приветствую уважаемые программисты Помогите понять понять, как добраться до объектов на форме с другого класса (в моём случае listBox)
Как это можно реализовать?
Пытался так.... Но что то лыжи не едут, наверно всё таки я ......
если не сложно объясните почему не получается данным способом....

Код:
    abstract public class Account // из этого класса
    {
        
        public void Read()
        {          
            Form1 f1 = new Form1();
            using (StreamReader sr = File.OpenText(@"lock\BasePSS.TXT"))
            {
                string s = "";
                while ((s = sr.ReadLine()) != null)
                {
                    f1.ListBoxADD(s);
                }
                
            }
           
        }
   }
Код:
 public partial class Form1 : Form // в этот класс
    {
        Name name = new Name();
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {           
          name.Read();
        }

        public void ListBoxADD(string s)
        {
            listBox1.Items.Add(s);
        }
   }
Razor007 вне форума Ответить с цитированием
Старый 05.02.2015, 19:35   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Видимо надо было передать уже существующий объект класса Form1 (this если внутри его методов), а не новый создавать.

Но скорее всего вы что-то странное делаете и так не надо делать.

Например, пусть Read возвращает список, а не сам его выводит.

И класс Name наследуемый от Account как-то подозрительно выглядит. Что там за классы и какая задача?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 05.02.2015, 19:44   #3
Razor007
Пользователь
 
Регистрация: 04.02.2015
Сообщений: 16
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Видимо надо было передать уже существующий объект класса Form1 (this если внутри его методов), а не новый создавать.

Но скорее всего вы что-то странное делаете и так не надо делать.

Например, пусть Read возвращает список, а не сам его выводит.

И класс Name наследуемый от Account как-то подозрительно выглядит. Что там за классы и какая задача?
Клас Name будет производить некие операции с записями в listBox1
А как сделать что бы Read() возвращал значение ? если ток использовать свойства, то как? такой г@вно код использовать не вариант
Код:
 public string Read()
        {          
            Form1 f1 = new Form1();
            using (StreamReader sr = File.OpenText(@"lock\BasePSS.TXT"))
            {
                string s = "";
                while ((s = sr.ReadLine()) != null)
                {
                    return s;
                }
               // return s; 
            }
           
        }
Razor007 вне форума Ответить с цитированием
Старый 05.02.2015, 19:55   #4
Razor007
Пользователь
 
Регистрация: 04.02.2015
Сообщений: 16
По умолчанию

Так будет немного проще понять....
Вложения
Тип файла: rar PassMenRev2.rar (318.0 Кб, 9 просмотров)
Razor007 вне форума Ответить с цитированием
Старый 05.02.2015, 19:55   #5
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

yield return скорее

Да просто в List<string> какой-нибудь прочитать в нем и вернуть.

Цитата:
Клас Name будет производить некие операции с записями в listBox1
Я про то, что идея с наследованием Имени от Аккаунта выглядит очень странно. Посмотрите теорию про ООП, SOLID и т.п.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 05.02.2015, 19:59   #6
Razor007
Пользователь
 
Регистрация: 04.02.2015
Сообщений: 16
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Я про то, что идея с наследованием Имени от Аккаунта выглядит очень странно. Посмотрите теорию про ООП, SOLID и т.п.
Там из проекта понятно почему Name : Account....
просто есть ежё классы которые будут производить почти аналогичные действия .....
Razor007 вне форума Ответить с цитированием
Старый 05.02.2015, 20:05   #7
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Неа, непонятно.

И действия непонятные какой-то Такой Read мог быть и у самой формы, и статическим, связь его с этими классами непонятна.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 05.02.2015, 20:15   #8
Razor007
Пользователь
 
Регистрация: 04.02.2015
Сообщений: 16
По умолчанию

С каждого экземпляра класса буду производиться такие действия и с каждого вызова хочу получать данные которые буду использовать в разных местах... вроде объяснил..
Код:
 public partial class Form1 : Form
    {
        Name name = new Name();
        Login login = new Login();
        Password password = new Password();

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            name.Read(@"lock\BasePSS.TXT");
            login.Read(@"lock2\BasePSS.TXT");
            password.Read(@"lock3\BasePSS.TXT");

        }
Код:
    abstract public class Account
    {
        
        public string Read(string adress)
        {
            Form1 f1 = new Form1();

            using (StreamReader sr = File.OpenText(adress))
            {
                string s = "";
                while ((s = sr.ReadLine()) != null)
                {
                  
                }

              
            }
           
        }
  }
Razor007 вне форума Ответить с цитированием
Старый 05.02.2015, 20:30   #9
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

И все так же непонятно зачем было создавать кучу классов если у них нет никакого состояния/свойств. С таким же успехом можно было и в форму, или в MyMethods этот Read воткнуть.

Скорее всего все эти Name, Password лучше сделать свойствами Account.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 05.02.2015, 20:47   #10
Razor007
Пользователь
 
Регистрация: 04.02.2015
Сообщений: 16
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
И все так же непонятно зачем было создавать кучу классов если у них нет никакого состояния/свойств. С таким же успехом можно было и в форму, или в MyMethods этот Read воткнуть.

Скорее всего все эти Name, Password лучше сделать свойствами Account.
Так я наверно и сделаю.... а запись эл-тов listBox1 перенесу во внешний код... в отдельный метод....
Razor007 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Доступ к полю класса из другого поля это класса NaumOff Общие вопросы Delphi 10 09.10.2012 09:53
Доступ к окнам из другого класса Стремящийся Win Api 18 01.09.2012 22:47
Доступ к обьекту другого класса. the27mart Общие вопросы по Java, Java SE, Kotlin 6 08.08.2012 19:30
Доступ из другого класса KipZ Windows Forms 1 06.02.2011 15:22
Как обратиться к объекту формы из другого класса java micha-r Общие вопросы по Java, Java SE, Kotlin 1 03.10.2009 21:07