Как добавить строку в datagridview, расположенную в другой форме - PullRequest
0 голосов
/ 28 февраля 2012

У меня есть две формы заявления.и у меня есть сетка данных с тремя строковыми столбцами на «MainForm».назначение второй формы - добавить строки в эту сетку данных с некоторыми параметрами, такими как текст столбцов 1,2 и 3

, этот код работает

private void MainForm_Load(object sender, EventArgs e)
{
  dgvTasks.Rows.Add("s1", "s2", "s3");
}

, но когдая перетаскиваю этот код в другую форму, он не работает

//"MainForm"
public void addRowToDataGridView(string type, string title, string time)
{
  dgvTasks.Rows.Add(type, title, time);
}

//"ParametersForm"
public static MainForm fm = new MainForm();
private void btnSave_Click(object sender, EventArgs e)
{
  fm.addRowToDataGridView("s1", "s2", "s3");
}

без ошибок.просто молчать и ряды не добавить.кто-нибудь может мне помочь?

Ответы [ 2 ]

2 голосов
/ 28 февраля 2012

MainForm fm = new MainForm ();

Таким образом, вы создали другую MainForm при создании объекта экземпляра для MainForm.

Вы должны получить активную MainForm.Поэтому вы должны держать активный экземпляр MainForm.

//"MainForm"

public static MainForm MainFormRef { get; private set; }
public Form1()
{
    InitializeComponent();
    MainFormRef = this;
}

public void addRowToDataGridView(string type, string title, string time)
{
  dgvTasks.Rows.Add(type, title, time);
}


//"ParametersForm"
private void btnSave_Click(object sender, EventArgs e)
{
  var fm = MainForm.MainFormRef;
  fm.addRowToDataGridView("s1", "s2", "s3");
}
0 голосов
/ 28 февраля 2012

Насколько я понимаю ваш вопрос, я могу предложить вам такой ответ

Сделать свойство 'setter' в MainForm любого типа (Пример:

//here is your MainForm
{
    public List<MyGVContent> SetColumnHead
    {
           set
           {
                  //here call your method to whom give 'value' as parameter
                  //attention, that in value contains items with Type, Title, Time
                  addRowToDataGridView();
           }
    }
    //which will update your 'dgvTasks' gridview
) 

//here is your Parameters Form
{
    private void btnSave_Click(object sender, EventArgs e)
    {
        //here call the property to whom send parameters
        this.MainForm.SetColumnHead = ...
    }
}

//where 
public sealed class MyGVContent
{
    string Type
    {
        get; set;
    }

    string Title
    {
        get; set;
    }

    string Time
    {
        get; set;
    }
}

Удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...