0

Ребят, помогите решить проблему, у меня есть Form1(основная) и есть Form2(форма, связанная с поиском. Поиск идет по полю, по одному значению). Задача: Найденную строку по полю вывести в textBoxы на Form1(основную) не что-бы добавлялась новая форма уже с добавленными данными, а это форма обновила данные.

private Form1 Form1;
public Search(Form1 form1)
{
    InitializeComponent();
    Form1 = form1;
}
Form1 = new Form1();
Search search = new Search(Form1);
Form1.textBox1.Text = reader.GetString(0);
Form1.textBox2.Text = reader.GetString(1);
Form1.textBox3.Text = reader.GetString(2);
Form1.textBox4.Text = reader.GetString(3);
Form1.listBox1.Items.Add(reader.GetString(4));
this.Close();
aepot
  • 49,560
Anton
  • 3
  • 3
  • https://ru.stackoverflow.com/a/835223/220553 – EvgeniyZ Feb 21 '24 at 11:49
  • @EvgeniyZ С этим все вроде бы понятно, меня больше интересует вопрос как обновить, а не получить вторую form1 с заполненными данными – Anton Feb 21 '24 at 11:58
  • 1
    В чем проблема получить нужную форму и написать в нужном методе форма.Свойство = новоеЗначение;? – EvgeniyZ Feb 21 '24 at 12:38
  • @EvgeniyZ Создал я например экземпляр формы form1.textBox1.text = "hello world". Событие разумеется по кнопке, запускаю приложение, код запустился действие выполнил, вывод на form1 нет никакого, добавил form1.show(); запустил код, помимо формы, на которой ничего не отображается, выводит форму на которой в итоге отображается, но что делать с формой на которой не отображается, она как главная форма? – Anton Feb 21 '24 at 12:43
  • 3
  • Не объясняйте код словами, пожалуйста. Под вопросом кнопка "Править", жмете, добавляете все туда. 2. Если у вас нужна форма не меняет данные, но после Show() вдруг все там есть, значит вы не передаете ссылку (как я вам писал выше), а создаете новую форму при помощи new Form1(). Еще раз прочитайте все, что есть по ссылке выше, особенно то, что идет после Теперь поговорим о передаче значений между классами:
  • – EvgeniyZ Feb 21 '24 at 13:02
  • @EvgeniyZ Добавил код в вопрос. Можете подсказать где ошибка? – Anton Feb 22 '24 at 05:27
  • Не вставляйте код в комментарии, его там невозможно читать. Перенес код в вопрос, отредактировал комментарий. Можете подсказать где ошибка - как вы поняли, что там ошибка? Студия вам не говорит, где ошибка? – aepot Feb 22 '24 at 10:20
  • Я ведь вам прямым текстом сказал выше а создаете новую форму при помощи new Form1(). Неужели это не понятно? Ну вот смотрим ваш код, видим Form1 = new Form1(); Search search = new Search(Form1);... Еще раз, вы должны передавать ссылку на нужную форму, а не создавать ее по новой. Допустим, если это все в коде первой формы, то new Search(this). – EvgeniyZ Feb 22 '24 at 11:12
  • @EvgeniyZ приведите пожалуйста максимально простой пример с получением ссылки из формы, потому что читая вашу статью, вызывали вы именно так Form1 = new Form1(); – Anton Feb 22 '24 at 13:28
  • Еще раз перечитайте комментарий выше. – EvgeniyZ Feb 22 '24 at 13:57
  • Я не могу понять как это правильно прописать: new Search(this) – Anton Feb 22 '24 at 14:00
  • Так и прописать. this - это текущий объект, если вы находитесь внутри класса Form1, то this - это будет именно ссылка на Form1. Ну а если вы в другом классе делаете new Search(...), то значит вам туда надо передать сначала this из Form1, а уже эту ссылку передавать в инициализацию Search(). – EvgeniyZ Feb 22 '24 at 14:38
  • Все, я разобрался, в форме 2 создаем переменные, в которых будем хранить ссылки, в форме 1 инициализируем форму 2. Перед открытием окна мы в переменные забрасываем ссылки на компоненты формы, после чего к ним в другой форме присваиваем значение. Спасибо за помощь – Anton Feb 23 '24 at 06:46
  • Зачем вам переменные, когда это должен быть конструктор, ибо без этих "форм" ваш код работать не будет... Тоже самое, только new Search(то, что передаете в переменные);, что в этом сложного я не пойму) Вы хотяб общались со мной, а не просто просили бы от меня код, ведь полюбому ловите ошибку или что-то еще, о чем молчите и что в ступор вас вводит. – EvgeniyZ Feb 23 '24 at 10:44
  • @EvgeniyZ Я разобрался, я при открытии формы передаю ссылку на другую форму Form2 frm = new Form2(); frm.but1 = this.button1; frm.ShowDialog(); а вот эта переменная у будет хранить ссылку на элемент другой формы public TextBox text1 . После чего я обращаюсь к этой переменной и у меня все передается – Anton Feb 23 '24 at 13:59