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

Обращение к переменной OleDbConnection из другой формы

05.10.2012, 16:57. Показов 2014. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Помогите разобраться с видимостью объектов в формах.

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

Главная:
C#
1
2
3
4
5
6
7
8
9
10
public partial class MainForm : Form
{
      ...
OleDbConnection Connection = new OleDbConnection();
      ...
}
  public Mainform();
  {
  ...
  }
Вторая:

C#
1
2
3
4
private void InsertObjectButton_Click(object sender, EventArgs e)
        {          
            Sample.MainForm.Connection.Open();           
        }
Студия говорит, что невозможно из-за уровня защиты. Но почему я не понимаю, Connection ведь был объявлен в паблик классе?

Добавлено через 19 минут
Кроме того есть ошибка
"Для нестатического поля, метода или свойства "Sample.MainForm.Connection" требуется ссылка на объект."

Что это вообще имеется ввиду? Я же дал ему полную ссылку на класс
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.10.2012, 16:57
Ответы с готовыми решениями:

Обращение к переменной из другой формы
Здравствуйте) Подскажите у меня в одной форме имеется коллекция, как мне передать или как обратится к ней из другой формы, думал что как...

Обращение к переменной одной формы, обрабатывая событие на другой форме...
Я сделал в гриде столбец селект. При нажатии на кнопку, я сохраняю индекс выбранного ряда в переменную: public void...

Обращение к переменной другой формы
Как мне обратиться к переменной другой формы, не записвая ее ни в какой из компонентов. Типа вот такого Form7.n

5
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
05.10.2012, 17:23
Цитата Сообщение от Void-87 Посмотреть сообщение
Что это вообще имеется ввиду? Я же дал ему полную ссылку на класс
У вас поле Connection - не статическое. То есть у каждого объекта MainForm будет своя копия Connection, поэтому компилятор не может выбрать, к полю какого объекта вы обращаетесь.
Это у вас пока что только одна форма MainForm создается, а что если их будет две?

Если нужен всего один Connection на программу, сделайте поле статическим.
Если несколько - указывайте экземпляр MainForm.
0
47 / 47 / 13
Регистрация: 05.05.2012
Сообщений: 178
05.10.2012, 17:30
C#
1
2
MainForm mf = this.Owner as MainForm;
mf.Connection.Open();
C#
1
2
3
4
5
6
public partial class MainForm : Form
{
      ...
public OleDbConnection Connection = new OleDbConnection();
      ...
}
1
2 / 2 / 1
Регистрация: 22.06.2012
Сообщений: 244
05.10.2012, 18:24  [ТС]
Я пробовал так, ссылку действительно больше не требует, однако на уровень доступа все равно ругается.
Цитата Сообщение от turbanoff Посмотреть сообщение
То есть у каждого объекта MainForm будет своя копия Connection.
Это у вас пока что только одна форма MainForm создается, а что если их будет две? Как тогда компилятору выбирать, к полю какого объекта вы обращаетесь?
Не знал. Спасибо. Ну да, логично, каждый объект ведь наследует класс, значит у них у всех есть этот внутренний объект.

Добавлено через 52 минуты
Цитата Сообщение от DeathMetal Посмотреть сообщение
C#
1
2
MainForm mf = this.Owner as MainForm;
mf.Connection.Open();
Спасибо, это помогло. Однако пришлось изменить кое что:
C#
1
2
MainForm mf = this.Owner as MainForm;
MainForm.Connection.Open();
Вы могли бы прокомментировать эту строку?
C#
1
MainForm mf = this.Owner as MainForm;
В МSDN хорошей инфы не нашел. Объясните, что вы сделали этой строкой?
То есть я понимаю суть того что мы сделали, но не понимаю синтаксис.
0
Заблокирован
05.10.2012, 23:57
Цитата Сообщение от Void-87 Посмотреть сообщение
MainForm mf = this.Owner as MainForm;
аналогично
C#
1
MainForm mf = (MainForm)this.Owner;
но только мне почему - то кажется, что данная строчка вообще лишена какого - либо смысла в данном контексте
0
47 / 47 / 13
Регистрация: 05.05.2012
Сообщений: 178
06.10.2012, 00:16
http://msdn.microsoft.com/ru-r... s.90).aspx

Цитата Сообщение от Void-87 Посмотреть сообщение
MainForm.Connection.Open();
Да, извиняюсь, торопился. Можно использовать и мой код, только надо будет объявить переменную mf:
C#
1
MainForm mf = new MainForm();
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.10.2012, 00:16
Помогаю со студенческими работами здесь

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

Передача значения переменной одной формы в описание переменной другой
Всем привет. Не могу найти решение проблемы. На первой форме имеется глобальная переменная kol, которая содержит в себе число. на второй...

Обращение к публичной переменной подчинённой формы
Здравствуйте! Подскажите пожалуйста как обратиться к публичной переменной подчинённой формы. У меня получается обращение к форме, но к...

Обращение к контролам другой формы
Почему в VB.NET такая конструкция допустима: Dim instance As New Form2() instance.Show() Dim TTT =...

Обращение к методу из другой формы
public static void AddDocument() { using (var fs = new StreamWriter(File.Create(SSC.name.ToString() + ".txt"),...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru