Войти

Показать полную графическую версию : [решено] c# datagrid


DAmlex
20-07-2011, 19:13
Есть две формы Form1 и add, на форме-Form1 расположен datagridview и еще кнопка-добавить, при нажатии на которую отображается форма-add, содержащая в себе несколько textbox и кнопку-добавить при нажатии на которую заполненные textbox должны заполнить datagrid на форме-Form1. В обработчике пишу Form1 MyForm = new Form1(); MyForm.new_class.Rows.Add(textbox1.text,и далее); не чего не происходит. Ошибок нет.


new_class это имя datagrid

LilLoco
20-07-2011, 19:27
Form1 MyForm = new Form1(); »
Этим вы создаете новый объект, а не работаете со старой формой. Для внесения данных можно воспользоваться таким методом:
Class Main - главная форма,
Class Adding - форма добавления.
GridView - гридвью на главной форме.


class Adding : Form
{
public Adding ( GridView gv) // конструктор
{
this._grid = gv;
}

private GridView _gv; // Поле, ему будет присвоен гридвью с главной формы.
.... различные действия

обработчик события данных по добавлению из текстбоксов
{
_gv.Rows.Add(textBox1.Text, textBox2.Text, ...);
}
}



class Main : Form
{
всяко разное.....
обработчик события кнопки добавить
{
Adding a = new Adding(GridView);
a.ShowDialog();
}
}

DAmlex
21-07-2011, 12:56
Теперь при нажатии на кнопку добавить появляется пустая форма (то есть без textbox и кнопок)
FORM ADD
....
public add(DataGridView new_class)
{
// TODO: Complete member initialization
this.new_class = new_class;
}
....
public void ADD_add_Click(object sender, EventArgs e)
{


new_class.Rows.Add(name_txt.Text, class_txt.Text, gear_txt.Text, gear_pvp, level_txt.Text, dps_txt.Text);


}
FORM1
public void ADD_Click(object sender, EventArgs e)
{
add addshow = new add(new_class);
addshow.ShowDialog();
}

Delirium
21-07-2011, 15:59
Я в таких случаях делаю по другому. Варианта 2.
1. Создаем dataset, в нем таблицу требуемого содержания, открываем форму заполнения, забиваем данные, по нажатию ОК заносим данные в таблицу из dataset. Закрываем форму заполнения и далее в основной форме считываем занесенные данные.
2. Создаем в коде формы заполнения свою функцию (код пишу навскидку, могут быть ошибки)
public ArrayList ShowDialog()
{
ArrayList mas = new ArrayList();
this.ShowDialog();
mas.Add('текст 1');
mas.Add('текст 2');
return mas;
}
в первой форме вызываем вторую таким путем
ArrayList mas2 = form2.ShowDialog();
В итоге в массиве mas2 будут все требуемые значения.

LilLoco
21-07-2011, 23:08
появляется пустая форма »
В конструктор формы так же требуется дописать

InitializeComponent();

для инициализации всех контролов, как и в "обычном" случае.




© OSzone.net 2001-2012