C # установить dataTable, сгенерированный в formname.designer.cs как статический - PullRequest
0 голосов
/ 28 июля 2011

Я хочу знать, можно ли изменить форму namename.designer.cs и установить переменную, сгенерированную из режима разработки, как приватную, так и статическую:

 private dtableAdapters.llist nameTable;// this to become static
 public static dtableAdapters.llist nameTable;//like this

Я читаю здесь C #Установите флажок Static , что не является хорошим методом.Может быть, я могу сделать это по-другому.Вот что я хочу сделать:

У меня есть форма, которая содержит больше форм, открытых на панели.Одна форма содержит несколько выпадающих списков со значениями из базы данных.Проблема в том, что, когда я добавляю больше значений в базу данных из другой формы с текстовым полем, необходимо снова заполнить поле со списком.Я подумал, что это может быть легко, если я обновлю выпадающий список сразу после добавления некоторых значений.(поле со списком и текстовое поле, которое добавляет значения в базу данных, которые отображаются в поле со списком, имеют разные формы).

У вас есть другая идея сделать это?Я попытался также заполнить комбинированный список еще раз, когда он щелкает, но из-за того, что у меня больше комбинированных списков, я получаю некоторые фатальные ошибки, когда быстро нажимаю один на другой.

edit: как последний метод: я мог бы добавить кнопкуи заполните поле со списком, когда кнопка нажата, но я хочу сделать это автоматически

(winforms не веб-формы)

1 Ответ

2 голосов
/ 29 июля 2011

Один из подходов - запустить событие в FormA при добавлении значения.
Форма B может подписаться на событие и обновить список.Единственный хитрый момент в том, что FormB нужна ссылка на FormA для подключения к событию.

Примерно так ...

FormA

public delegate void DataAddedEventHandler(object sender, EventArgs e);
    public partial class FormA : Form
    {
    public event DataAddedEventHandler DataAdded;
    private void AddButton_Click(object sender, EventArgs e)
    {
        //do The database stuff...

        //fire the event
        OnDataAdded();
    }

    private void OnDataAdded()
    {
        if (DataAdded != null)
        {
            DataAdded(this, new EventArgs());
        }
    }

FormB

 public void HookupListener(FormA dataform)
 {
      //hook up the event to the handler
      dataform.DataAdded += new DataAddedEventHandler(dataform_DataAdded);
 }

 void dataform_DataAdded(object sender, EventArgs e)
 {
       //refresh the combo box
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...