Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.90/41: Рейтинг темы: голосов - 41, средняя оценка - 4.90
1 / 1 / 0
Регистрация: 08.02.2013
Сообщений: 104

Обращение к объекту другой формы

05.07.2015, 14:55. Показов 8342. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток! Я не могу обратиться к объекту из другой формы. Код подчеркивается красным, то есть он не видит нужный мне listBox1.
C#
1
2
3
author author = new author();
            this.listBox1.Items=author.//вот здесь я должен выбрать listBox1,но его нет, хотя на форме он есть
            author.Show();
Заранее спасибо!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.07.2015, 14:55
Ответы с готовыми решениями:

Обращение к объекту из другой формы
Добрый день, знаю что в нете есть многи инфы по этому вопросу, но не могу понять. Есть форма с двумя кнопками, при нажатии на кнопку...

Обращение к объекту в другой форме
Есть 2 формы. Они оба открыты и в одной из них находится textbox в который нужно записать какое нибудь слово из с другой формы в которой...

Обращение из другого класса к объекту формы
Хотел перенести методы из класса Form1 в новый класс WordPerformer, установил наследование. Метод должен изменять CheckBox на форме, но в...

30
 Аватар для OpenGoodwin
7 / 7 / 3
Регистрация: 15.01.2014
Сообщений: 459
05.07.2015, 16:01
В свойствах listBox выберите модификатор доступа public.
0
1 / 1 / 0
Регистрация: 08.02.2013
Сообщений: 104
05.07.2015, 16:24  [ТС]
Цитата Сообщение от OpenGoodwin Посмотреть сообщение
В свойствах listBox выберите модификатор доступа public.
Спасибо! Помогло, но теперь та часть кода ,которая до равно подчеркивается красным и ошибка"Ошибка 1 Невозможно присвоить значение свойству или индексатору "System.Windows.Forms.ListBox.Items" -- доступ только для чтения C:\Users\Данил\Documents\Visual Studio 2015\Projects\WindowsFormsApplication2\W indowsFormsApplication2\Form1.cs 88 13 WindowsFormsApplication2
"
C#
1
2
3
author author = new author();
this.listBox1.Items//теперь эта часть подчеркивается красным=author.listBox1.Items;
 author.Show();
0
 Аватар для OpenGoodwin
7 / 7 / 3
Регистрация: 15.01.2014
Сообщений: 459
05.07.2015, 16:35
Данил96, вы называете объект именем типа объекта. Так быть не должно.

То есть, это:

C#
1
author author = new author();
замените на

C#
1
author AuthorObj = new author();
А
C#
1
author.Show();
соответственно на

C#
1
AuthorObj.Show();
0
1 / 1 / 0
Регистрация: 08.02.2013
Сообщений: 104
05.07.2015, 16:55  [ТС]
OpenGoodwin, Забавно, но все равно та часть остается подчеркнутой.
C#
1
2
3
author AuthorObj = new author();
            this.listBox1.Items = AuthorObj.listBox1.Items;
            AuthorObj.Show();
0
 Аватар для OpenGoodwin
7 / 7 / 3
Регистрация: 15.01.2014
Сообщений: 459
05.07.2015, 16:57
Данил96, а ошибка какая?
0
1 / 1 / 0
Регистрация: 08.02.2013
Сообщений: 104
05.07.2015, 17:00  [ТС]
Цитата Сообщение от OpenGoodwin Посмотреть сообщение
Данил96, а ошибка какая?
Ошибка 1 Невозможно присвоить значение свойству или индексатору "System.Windows.Forms.ListBox.Items" -- доступ только для чтения C:\Users\Данил\Documents\Visual Studio 2015\Projects\WindowsFormsApplication2\W indowsFormsApplication2\Form1.cs 88 13 WindowsFormsApplication2
0
 Аватар для OpenGoodwin
7 / 7 / 3
Регистрация: 15.01.2014
Сообщений: 459
05.07.2015, 17:13
Данил96, в правом нижнем углу. Окно свойств. Modifiers - Public.
Миниатюры
Обращение к объекту другой формы  
0
1 / 1 / 0
Регистрация: 08.02.2013
Сообщений: 104
05.07.2015, 17:18  [ТС]
Цитата Сообщение от OpenGoodwin Посмотреть сообщение
Данил96, в правом нижнем углу. Окно свойств. Modifiers - Public.
Так у меня оба listBox с модификатором public.
0
 Аватар для OpenGoodwin
7 / 7 / 3
Регистрация: 15.01.2014
Сообщений: 459
05.07.2015, 17:22
Данил96, ну тогда даже не знаю чем помочь. Проблема явно с модификаторами доступа.
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
05.07.2015, 20:29
Цитата Сообщение от Данил96 Посмотреть сообщение
у меня оба listBox с модификатором public.
Делать контролы public - не очень хорошая идея.
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
05.07.2015, 21:16
Данил96,
Ну так свойство Items только для чтения. Если нужно программно добавить элемент(ы) в коллекцию Items, то пользуйтесь методами Items.Add() и Items.AddRange(). Второй вариант - свойство DataSource, которому можно передать ссылку на массив или другую коллекцию.
0
1 / 1 / 0
Регистрация: 08.02.2013
Сообщений: 104
06.07.2015, 18:31  [ТС]
Цитата Сообщение от Даценд Посмотреть сообщение
Данил96,
Ну так свойство Items только для чтения. Если нужно программно добавить элемент(ы) в коллекцию Items, то пользуйтесь методами Items.Add() и Items.AddRange(). Второй вариант - свойство DataSource, которому можно передать ссылку на массив или другую коллекцию.
НУ вот так сделал, но теперь на listbox1 второй форме пишет, не нужный мне текст, а слово в скобках "(Коллекция)"
C#
1
2
3
author author = new author();
            author.Show();
            author.listBox1.Items.Add(this.listBox1.Items);
0
60 / 60 / 54
Регистрация: 19.02.2012
Сообщений: 262
06.07.2015, 18:46
Можно сделать так:
C#
1
2
3
4
5
6
7
8
9
10
            string s = "";
            foreach (var el in listBox1.Items)
            {
                s += el + " ";
            }
            string[] mas = s.Split();
            foreach (var el in mas)
            {
                listBox2.Items.Add(el);
            }
0
1 / 1 / 0
Регистрация: 08.02.2013
Сообщений: 104
06.07.2015, 18:57  [ТС]
Цитата Сообщение от ioane Посмотреть сообщение
Можно сделать так:
так второй listBox на другой форме.
0
60 / 60 / 54
Регистрация: 19.02.2012
Сообщений: 262
06.07.2015, 19:08
Тогда следующим образом. Сначала происходит передача строки в конструктор Form2
C#
1
2
3
4
5
6
7
8
9
10
        private void button1_Click(object sender, EventArgs e)
        {
            string s = "";
            foreach (var el in listBox1.Items)
            {
                s += el + " ";
            }
            Form2 f2 = new Form2(s);
            f2.Show();
        }
Затем переделывайте конструктор Form2:
C#
1
2
3
4
5
6
7
8
9
        public Form2(string data)
        {
            InitializeComponent();
            string[] mas = data.Split();
            foreach (string el in mas)
            {
                listBox1.Items.Add(el);
            }
        }
0
1 / 1 / 0
Регистрация: 08.02.2013
Сообщений: 104
06.07.2015, 20:00  [ТС]
Цитата Сообщение от ioane Посмотреть сообщение
Тогда следующим образом. Сначала происходит передача строки в конструктор Form2
C#
1
Form2 f2 = new Form2(s);//после равно подчеркивается красным;
Ошибка:"Ошибка 1 "WindowsFormsApplication2.Form2" не содержит конструктор, который принимает аргументы "1" C:\Users\Данил\Documents\Visual Studio 2015\Projects\WindowsFormsApplication2\W indowsFormsApplication2\Form1.cs 102 24 WindowsFormsApplication2"

Цитата Сообщение от ioane Посмотреть сообщение
Затем переделывайте конструктор Form2:
C#
1
string[] mas = data.Split();//data подчеркивается красным
Ошибка:"Ошибка 2 Элемент "data" не существует в текущем контексте. c:\users\данил\documents\visual studio 2015\projects\windowsformsapplication2\w indowsformsapplication2\form2.cs 27 28 WindowsFormsApplication2"
0
60 / 60 / 54
Регистрация: 19.02.2012
Сообщений: 262
06.07.2015, 20:18
А вы конструктор класса Form2 переписали? Если нет, то будут выскакивать такие ошибки, потому что вначале используется конструктор без параметров. Ладно выложу полный код:
Это для Form1:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace ExampleWindows
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            string s = "";
            foreach (var el in listBox1.Items)
            {
                s += el + " ";
            }
            Form2 f2 = new Form2(s);
            f2.Show();
        }
    }
}
Это для Form2:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace ExampleWindows
{
    public partial class Form2 : Form
    {
        public Form2(string data)
        {
            InitializeComponent();
            string[] mas = data.Split();
            foreach (string el in mas)
            {
                listBox1.Items.Add(el);
            }
        }
 
        private void Form2_Load(object sender, EventArgs e)
        {
 
        }
    }
}
На Form1 есть listbox1 и кнопка, а на Form2 только listbox1
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
06.07.2015, 20:23
Данил96,
вот так точно получится
в 1-й форме
C#
1
2
3
ListBox.ObjectCollection items = listBox1.Items;
Form2 f2 = new Form2(items);
f2.Show();
во 2-й форме добавляете конструктор
C#
1
2
3
4
5
6
7
8
public Form2(ListBox.ObjectCollection items)
{
    InitializeComponent();
    foreach (var item in items)
    {
        listBox1.Items.Add(item);
    }
}
0
1 / 1 / 0
Регистрация: 08.02.2013
Сообщений: 104
06.07.2015, 20:31  [ТС]
Цитата Сообщение от ioane Посмотреть сообщение
А вы конструктор класса Form2 переписали? Если нет, то будут выскакивать такие ошибки, потому что вначале используется конструктор без параметров. Ладно выложу полный код:
Это для Form1:
Спасибо,что помогаете, но увы.
Миниатюры
Обращение к объекту другой формы   Обращение к объекту другой формы  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.07.2015, 20:31
Помогаю со студенческими работами здесь

Обратиться к объекту из другой формы
Всем привет! Есть 2 формы, Form1 и Form2 соответственно. В Form1 есть: public string a; В Form2 есть label1 и timer1. ...

Как обратиться к объекту из другой формы
Приветствую форумчане. Прошу вашей помощи. Подскажите как обратиться к checkbox который находится на 1 форме из 2 формы. Буду благодарен...

Не удается обращение к элементам и методам формы из другой формы
Добрый день, Создал 2 формы, на второй есть паблик метод, элемент и несколько переменных, доступа к которым почему-то нет... С...

Как получить доступ к объекту класса из другой формы?
В файле создан класс с одним полем (это для начала). Есть две формы. Создаю в одной из них объект класса, как получить к нему доступ из...

Обращение к компоненту другой формы
Здравствуйте. Сразу к делу: имеются три формы "Form1" (на ней располагаются textBox1, textBox2 и button1), "Form2" (присутствует...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru