MukulMohal Ответов: 2

Как перезагрузить форму по нажатию кнопки


Привет, я пытаюсь перезагрузить/обновить свою winform, может ли кто-нибудь посоветовать мне, как это сделать
моя winform включает в себя таблицу данных, текстовые поля, combobox. я хочу сбросить их в исходное положение, как они были при загрузке формы.

Что я уже пробовал:

я сделал имя кнопки новым и в событии new_click очистил все поля. он работает нормально, но мой datagrid теряет свое свойство.

этот метод я использовал для очистки данных
private void ClearData()
        {
            _dtgrid.Rows.Clear();
            txtaddressline1.Text = "";
            txtaddressline2.Text = "";
            txtBillValue.Text = "";
            txtCUSTOMERNAMETEXT.Text = "";
            txtDiscountAmt.Text = "";
            txtDisPer.Text = "";
            txtgrn.Text = "";
            txtGSTNO.Text = "";
            txtINVOICENO.Text = "";
            txtname.Text = "";
            txtRoundOf.Text = "";
            txtTRANSPORT.Text = "";
            txtvichle.Text = "";
            btnCustomer.Focus();
            this.Refresh();
        }

это кнопок выберите событие
private void NEW_Click(object sender, EventArgs e)
        {
            ClearData();
            cmbINVOICETYPE.Focus();
        }

CHill60

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

MukulMohal

это дает мне ошибку, как - Столбец с именем "Item" уже принадлежит этому DataTable.

2 Ответов

Рейтинг:
1

BillWoodruff

Определение имени по умолчанию для объекта DataTable, и сохранить существующую структуру DataGreidView и сведения:

// required: using System.Data;

public const string DTBackUp = "DTBackUp";

// in the Form Load Event, or in another method
dataGridView1.DataSource = dt;

WriteXML(dt);
Когда вы хотите восстановить DataGridView:
DataTable dt = this.ReadXML();
this.dataGridView1.DataSource = dt;
Использование этих двух методов:
private DataTable ReadXML()
{
    OpenFileDialog ofd = new OpenFileDialog();
    ofd.Filter = "XML|*.xml";

    DataSet dt = new DataSet();

    if (ofd.ShowDialog() == DialogResult.OK)
    {
        try
        {
            dt.ReadXml(ofd.FileName);

            return dt.Tables[0];
        }
        catch (Exception ex)
        {
            throw new DataException("Fail to read");
        }
    }

    return null;
}

private void WriteXML(DataTable dt)
{
    // must have a name to serialize !
    if (dt.TableName == "") dt.TableName = DTBackUp;

    SaveFileDialog sfd = new SaveFileDialog();
    sfd.Filter = "XML|*.xml";

    if (sfd.ShowDialog() == DialogResult.OK)
    {
        try
        {
            dt.WriteXml(sfd.FileName);
        }
        catch (Exception ex)
        {
            throw new DataException("Fail to write");
        }
    }
}


Рейтинг:
0

OriginalGriff

Цитата:
он работает нормально, но мой datagrid теряет свою собственность.

Ну да, так и будет:
private void ClearData()
{
    _dtgrid.Rows.Clear();

Если вы специально удалите из него все данные, он действительно потеряет все данные...


MukulMohal

он даже теряет привязку данных