Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / c# Как мне выполнить код формы заново? / 6 сообщений из 6, страница 1 из 1
14.04.2013, 14:12
    #38224905
gfan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c# Как мне выполнить код формы заново?
Есть форма1, в которой отображаются некие записи и их характеристики. Записи в листбоксах, характеристики отображаются по нажатию. Так же есть кнопка добавить на 1ой форме.
После добавления записи во второй форме, нужно обновить первую форму (выполнить конструктор первой формы заново) и закрыть 2ю форму. Можно ли так сделать? Пробовал во второй форме писать нечто вроде:

Код: c#
1.
2.
3.
                    Form1 form1 = new Form1();
                    form1.Refresh();
                    this.Close();


Но форма1 не обновляется. В листбоксах на форме1 те же записи. (Записи добавляются в листбокс из тхт, при срабатывании конструктора)
...
Рейтинг: 0 / 0
14.04.2013, 17:17
    #38225000
dymal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c# Как мне выполнить код формы заново?
gfan, а почему выбран путь именно пересоздания формы1?
Не проще ли просто вызвать Ащкь1.Refresh?

И еще (наверное. самое главное): очень важно знать что делает функция Refresh. Вы создаете новую форму form1, а компоненты формы в этой функции инициализируете (InitializeComponent)? А видимость формы (Form1.Visible) там устанавливаете?

И последнее: не понятно когда/по какому событию выполняется тот кусок кода, что вы привели.
...
Рейтинг: 0 / 0
14.04.2013, 17:42
    #38225006
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c# Как мне выполнить код формы заново?
gfanЕсть форма1, в которой отображаются некие записи и их характеристики. Записи в листбоксах, характеристики отображаются по нажатию. Так же есть кнопка добавить на 1ой форме.
После добавления записи во второй форме , нужно обновить первую форму (выполнить конструктор первой формы заново) и закрыть 2ю форму. Можно ли так сделать? Пробовал во второй форме писать нечто вроде:

Код: c#
1.
2.
3.
                    Form1 form1 = new Form1();
                    form1.Refresh();
                    this.Close();


Но форма1 не обновляется. В листбоксах на форме1 те же записи. (Записи добавляются в листбокс из тхт, при срабатывании конструктора)1. И что происходет при клике на кнопку "Добавить" на 1-й форме?
2. Куда добавляет записи вторая форма?
3. Стандартный метод Refresh перерисовывает форму и все элементы управления, что расположены на ней. С чего Вы взяли, что он делает то, что Вам нужно?
...
Рейтинг: 0 / 0
14.04.2013, 18:09
    #38225023
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c# Как мне выполнить код формы заново?
Код: 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.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
using System;
using System.Collections.Generic;
using System.Windows.Forms;

namespace WindowsFormsApplication
{
    public partial class Form1 : Form
    {
        private DataService data = new DataService();

        public Form1()
        {
            InitializeComponent();
            DataBind();
        }

        private void DataBind()
        {
            listBox.DataSource = null;
            listBox.DataSource = data.GetAll();
        }

        private void OnAddClick(object sender, EventArgs e)
        {
            using (var form = new Form2())
            {
                if (form.ShowDialog() == DialogResult.OK)
                {
                    DataBind();
                }
            }
        }
    }

    /// <summary>
    /// Класс, что предоставляет нам методы, для работы с фейковыми данными
    /// </summary>
    public class DataService
    {
        private static List<String> list = new List<String> { "Иванов", "Петров", "Сидоров" };

        public void Add(string item)
        {
            list.Add(item);
        }

        public IEnumerable<String> GetAll()
        {
            return list;
        }
    }
}
...
Рейтинг: 0 / 0
15.04.2013, 07:27
    #38225282
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c# Как мне выполнить код формы заново?
skyANA,

Анна, а не проще ли использовать BindingList<T>, тогда вообще ни чего обновлять будет не нужно, ListBox или ListView сами обновятся.
...
Рейтинг: 0 / 0
15.04.2013, 09:21
    #38225348
cooldeveloper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c# Как мне выполнить код формы заново?
Roman Mejtesа не проще ли использовать BindingList<T>
Используй, кто запрещает. Тебе возвращают универсальный IEnumerable, его можно обвязать во что угодно.
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / c# Как мне выполнить код формы заново? / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]