как обратиться к элементу другой формы c
Управление одной формой из другой
Иногда бывает нужно обратиться к элементам какой-то формы из другой в процессе выполнения программы. Например, есть форма Form1, из нее мы открываем другую Form2 и теперь, работая в форме Form2 нужно обратиться, получить доступ к элементам родительской формы Form1. Я нашел несколько способов как это сделать.
1-й способ. Передача ссылки в public переменную.
Перед открытием формы, передаем ссылку на нужный элемент в переменную public вызываемой формы.
В форме Form2 переменная, в которую передавали ссылку, будет теперь соответствовать кнопке button1 из формы Form1
2-й способ. Передача ссылки в дочернюю форму.
Суть примерна та же, то и в 1-м способе. При открытии формы Form2 передаем в нее ссылку на элемент, который планируем потом менять.
Теперь в форме Form2 нужно создать переменную, которая будет содержать ссылку на эту кнопку и через нее будем обращаться к кнопке на Form1 (строки 5,7,9 и 15).
3-й способ. Доступ ко всей родительской форме.
Чтобы осуществить это, нужно внести изменения в нескольких файлах, но зато при этом получим доступ ко всем элементам родительской формы и не нужно передавать ссылку на каждый элемент, как в 1-м способе.
Шаг 1. В файле Program.cs создаем публичную переменную f1 (строка 5).
Шаг 3. При создании формы Form1 присваиваем переменной f1 ссылку на эту форму (строка 7)
Обращение к элементу другой формы
Обращение к элементу на другой форме
Доброго времени суток, Господа. Начинаю работать с C#, помогите решить задачку. есть две формы.
Обращение к элементу формы из обработчика
Есть обработчик для нескольких текстбоксов static public void FrequecyInput(object sender.
Не удается обращение к элементам и методам формы из другой формы
Добрый день, Создал 2 формы, на второй есть паблик метод, элемент и несколько переменных, доступа.
Доступ к элементу из другой формы
Как изменить свойство пункту contextmenustrip? делаю так, не получается General general = new.
Решение
теперь:
передача дааных: из формы 1 в форму 2
передача данных: из формы2 в форму 1
Обратиться к элементу управления другой формы
Как добавить данные, например из textbox расположенного на form2, добавить к таблицы datagridview.
Обращение к toolStripMenuItem из другой формы
Здравствуйте форумчане! Подскажите начинающему как можно реализовать обращение к toolStripMenuItem.
Обращение к объекту из другой формы
Добрый день, знаю что в нете есть многи инфы по этому вопросу, но не могу понять. Есть форма с.
Обращение к TableAdapter из другой формы
Всем привет.Подскажите пожалуйста, что я делаю не так.Необходимо вызвать TableAdapter из другой.
Как из второго окна обратиться к элементам первого?
Здравствуйте!
Изучаю VS C++. Создал проект Windows Forms в среде CLR. Есть два окна, второе (Form_insert) вызывается из первого(Form1).
Из первого окна я спокойно управляю элементами во втором. А из второго окна обратиться к элементам первого не могу
Так вызываю второе окно
Массив. Элементы второго кратны 3 элементам первого массива
Доброго времени суток имеется фрагмент : begin Assign(m1,imf1);rewrite (m1);.
Как из первого класса достучаться до объекта второго, а из второго до метода первого?
Есть два класса. Как можно из drawCircle достучаться до x,y,R, и из DrawNCirles дстучаться до.
Запуск второго консольного окна из первого
Задача такая Необходимо реализовать консольную программу, которая бы фильтровала поток текстовой.
Ошибки:
error C2065: Form_insert: необъявленный идентификатор
error C2065: nwDlg: необъявленный идентификатор
error C2061: синтаксическая ошибка: идентификатор «Form_insert»
error C2065: nwDlg: необъявленный идентификатор
error C2227: выражение слева от «->set_text» должно указывать на тип класса, структуры или объединения либо на универсальный тип
error C2065: nwDlg: необъявленный идентификатор
error C2227: выражение слева от «->Show» должно указывать на тип класса, структуры или объединения либо на универсальный тип
Добавлено через 12 минут
Решение
darya17, в этой теме всё уже произошло. Почему бы не общаться в своей теме. Ведь это трудновато читать другим будет. 😉
Если кроме Листбокса во второй форме ничего не нужно тогда так ( и метод Set не нужен )
Найти хендл второго (а не первого) окна по заданному классу
Помогите пожалуйста обшарил весь интернет и не нашел ответа как мне вписать строку во второе поле.
Составить 3-й массив, каждый элемент которого будет равен четным элементам первого массива и нечетным второго массива
Даны 2 одномерных массива, составить 3 массив, каждый элемент которого будет равен четным элементам.
Как обратиться к элементам формы по имени?
Здравствуйте. Есть 5 радиобуттонов, с названиями radioButton1 radioButton2 radioButton3.
Как обратиться к отмеченным элементам ListView
У ListView стоит параметр отображать чек боксы. Задача скопировать отмеченные файлы. что то.
Обращение к объектам главной формы с дочерней
в файле Program.cs сделал главную форму доступной из любой части приложения
Обращение к объектам формы
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) <.
Обращение к полям родительской формы из дочерней формы
В главной форме я создаю класс как поле и создаю другую форму public partial class FormMain.
Обращение к Listview из 2й(дочерней) формы
В идеале надо, что бы из дочерней формы мы могли добавлять элементы в listview, который расположен.
Обращение к классу из дочерней формы
Здравствуйте! Обрисую ситуацию: Есть родительская форма, в ней находится экземпляр класса Надо.
Создать DialogResult res = new DialogResult();
Открывай вторую форму через
Добавлено через 55 секунд
если не работает то может быть if(res.DialogResult == DialogResult.OK).. не могу посмотреть как правильно.
Решение
Как сделать видимыми некоторые элементы главной формы из дочерней формы?
Как сделать видимыми некоторые элементы главной формы (Image1.Visibility = Visibility.Visible) из.
System.StackOverflowException при обращении к элементу главной формы из дочерней формы
При закрытии дочерней формы (client) необходимо обратиться к элементу listView1 главной формы.
Обращение к элементам формы (объектам на форме) из void Proc()
https://www.cyberforum.ru/windows-forms/thread110436.html#a_Q2 прочитал, но так и не понял как это.
Обращение к элементам XAML вне класса MainWindow
Например: есть ListBox с Name=»kernelList»
Я могу обращаться к «kernelList» только в классе MainWindow. Допустим хочу добавить item в список
Как можно обращаться к элементам XAML из других классов?
3 ответа 3
((MainWindow)System.Windows.Application.Current.MainWindow). + нужный элемент.
У вас есть ряд нарушений MVVM из за которых вы сейчас страдаете.
По правилам MVVM вы не должны знать о том, что у вас в View слое, как и View слой не должен знать нечего про реализацию. Обратившись по имени вы нарушили это правило, ибо у вас есть строгая связь с объектом. Удалите XAML и запустите проект, если у вас реализован верно MVVM, то он запустится, код отработает.
У вас как я понял нет базового класса, который задан как DataContext и из за этого вы не понимаете как действовать дальше. Сделайте один класс, назовите его например MainViewModel и сделайте там свойство другой ViewModel, вот уже у вас связь.
Исходя из всего этого давайте сделаем простой проект, который будет реализовать правильный MVVM подход:
Задаем DataContect окну на созданный нами класс. Будем делать правильно:
На данном этапе у нас имеется окно, которое имеет источник данных в виде MainViewModel класса из которого оно с радостью возьмет все привязки. Давайте создадим там свойство и убедимся в этом:
Напишем в MainViewModel простое свойство со стандартным текстом (помним, что привязка доступна только к публичным свойствам!)
Как видим все успешно привязалось и View слой нечего не знает про ViewModel слой.
Сделаем теперь другую ViewModel, которая будет иметь доступ к основной, иметь свои свойства для привязки и будет менять значение текста, который мы привязали выше.
Передача значений в C#, это DI (если интересно, может погуглить что это) и два основных способа передачи являются через конструктор или через свойство. Если объект зависим от другого, то эту зависимость лучше передать через конструктор. Наша же VM зависима будет от главной, так давайте сделаем передачу через констуруктор:
Давайте теперь сделаем тестовое поле для привязки и привяжем его:
Само свойство в SecondViewModel :
Инициализация SecondViewModel в главной VM. Простое публичное свойство, которое в конструкторе класса инициализируется:
Ну и в XAML просто используем его там, где нам надо:
Результат вывода свойств из разных VM:
И в итоге мы получим измененное значение: