Здравствуйте! Проблема такова: Есть две формы. Одна содержит таблицу(dataGridView) — Наименование товара, Цена, Количество. Вторая Вызывается при нажатии кнопки "Добавить" и посылает в первую введенные в нее значение. Насчет передачи инфы из одной в другую руководствовался вот этим ресурсом
http://www.cyberforum.ru/windows-forms/thread110436.html (Пункт 2,5). Проблема: При добавлении вылетает ошибка NullReferenceException was unhandled(Object reference not set to an instance of an object.) при нажатии кпопки "добавить"
public void Добавить_Click(object sender, EventArgs e)
{
GoodsCount1 = Count.Text.ToString();
w_b.GoodsName2 = GoodsName1; (здесь ошибка)
w_b.GoodsPrice2 = GoodsPrice1;
w_b.GoodsCount2 = GoodsCount1;
this.Close();
}
форма 1
public partial class Waybil : Form
{
private string client = null;
private string driver = null;
private string carModel = null;
private string carKey=null;
public string GoodsName2 = null;
public string GoodsPrice2 = null;
public string GoodsCount2 = null;
AddWaybilGoods add_waibil_goods = null;
public Waybil()
{
InitializeComponent();
Base base_ = new Base(Share.server_address, Share.login, Share.password, Share.database);
base_.fill_combo(comboClients, "Clients", "ClientsName");
base_.fill_combo(comboDrivers, "Drivers", "DriversName");
base_.fill_combo(comboModel, "Cars", "CarsModel");
}
private void Create_Click(object sender, EventArgs e)
{
client = comboClients.SelectedItem.ToString();
driver = comboDrivers.SelectedItem.ToString();
carModel = comboModel.SelectedItem.ToString();
carKey =Key.Text.ToString();
Word.Application word = new Word.Application();
word.Visible = true;
Word.Document doc = word.Documents.Add();
doc.Select();
word.Selection.TypeText(client);
word.Selection.TypeText(driver);
word.Selection.TypeText(carModel);
word.Selection.TypeText(carKey);
}
private void Add_Click(object sender, EventArgs e)
{
//здесь вызывается форма для заполнения dataGridView
add_waibil_goods = new AddWaybilGoods();
add_waibil_goods.Owner = this;
add_waibil_goods.Show();
add_waibil_goods.Focus();
dataGridView1.Rows.Add(GoodsName2,GoodsPrice2, GoodsCount2);
dataGridView1.Update();
}
private void comboModel_SelectedIndexChanged(object sender, EventArgs e)
{
carModel = comboModel.SelectedItem.ToString();
Base base_ = new Base(Share.server_address, Share.login, Share.password, Share.database);
base_.find_item(Key, "Cars", "CarsKey", "CarsModel", carModel);
}
}
форма 2
Waybil w_b = null;
public string GoodsName1 = null;
public string GoodsPrice1 = null;
public string GoodsCount1 = null;
public AddWaybilGoods()
{
InitializeComponent();
w_b= this.Owner as Waybil;
Base base_ = new Base(Share.server_address, Share.login, Share.password, Share.database);
base_.fill_combo(AddWaybilGoods1, "Goods", "GoodsName");
}
public void Добавить_Click(object sender, EventArgs e)
{
GoodsCount1 = Count.Text.ToString();
w_b.GoodsName2 = GoodsName1;
w_b.GoodsPrice2 = GoodsPrice1;
w_b.GoodsCount2 = GoodsCount1;
this.Close();
}
private void AddWaybilGoods1_SelectedIndexChanged(object sender, EventArgs e)
{
GoodsName1 = AddWaybilGoods1.SelectedItem.ToString();
Base base_ = new Base(Share.server_address, Share.login, Share.password, Share.database);
base_.find_item(Price, "Goods","GoodsPrice", "GoodsName", GoodsName1);// метод принимает TextBox, имя таблицы, имя поля и его значение и вставляет в текстбокс цену товара
GoodsPrice1 = Price.Text.ToString();
}
}
Подскажите пожалуйста, где я туплю, если что-то можно сделать лучше, то как. Заранее спасибо большое!
Здравствуйте, algoritm256, Вы писали:
A>форма 1
A>A> public partial class Waybil : Form
A> {
A> private void Add_Click(object sender, EventArgs e)
A> {
A> //здесь вызывается форма для заполнения dataGridView
A> add_waibil_goods = new AddWaybilGoods(); *1
A> add_waibil_goods.Owner = this; *3
A> }
A> }
A>
A>форма 2
A>A> Waybil w_b = null;
A> public AddWaybilGoods()
A> {
A> InitializeComponent();
A> w_b= this.Owner as Waybil; *2
A> }
A> }
A>
A>Подскажите пожалуйста, где я туплю, если что-то можно сделать лучше, то как. Заранее спасибо большое!
Использование на втором шаге, а присвоение на третьем.
As is или история о том как не надо писать кодАвтор(ы): Владислав Чистяков (VladD2)
Дата: 18.12.2004
Работая над открытыми проектами, автор заметил, что операторы as и is многими программистами зачастую используются ненадлежащим образом. Результатом очередного двухчасового поиска ошибки и стала эта статья.
Особенности реализации MVP для Windows Forms... << RSDN@Home (RF) 1.2.0 alpha 5 rev. 77>>
Здравствуйте, algoritm256, Вы писали:
A>http://www.cyberforum.ru/windows-forms/thread110436.html (Пункт 2,5).
Ясно. Из всех способов вы выбрали самый дурацкий.

Почему тупо не объявить public поле??