На форме2 (c# winforms vs2010 net4.0) есть DataGridView1, в котором есть DatagridviewCombobox. Подскажите пожалуйста, как осуществить следующее для DatagridviewCombobox: при щелчке на стрелку dropdown открыть форму3 (на форме3 есть заполненный строками ListBox1 и кнопка "ок"), далее нужно при нажатии кнопки "ок" вернуть выделенную строку из ListBox1 в качестве значения для DatagridviewCombobox и форму3 закрыть? Код ниже работает, но не получается корректно закрыть список DatagridviewCombobox, т.е после щелчка на стрелку dropdown (в DatagridviewCombobox) открывается форма3, затем на форме3 выбирается одна строка в ListBox1 и нажимается кнопка "ок"(btn1), в результате не получается назначить значение ячейке DatagridviewCombobox не отображая раскрывающейся список.
Код формы2:
namespace Test
{
public partial class Form2 : Form
{
DataSet ds = new DataSet();
private DataSet InitializeDataSet()
{
//...код загрузки всех таблиц из файла mdb
return ds;
}
public Form2()
{
InitializeComponent();
DataSet ds = InitializeDataSet();
}
private void Form2_Load(object sender, EventArgs e)
{
}
ComboBox cb6;
DataGridViewCell currentCell;
private void DataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if (DataGridView1.CurrentCell.ColumnIndex == 5) //cb6
{
if (e.Control is ComboBox)
{
cb6 = (ComboBox)e.Control;
if (cb6 != null)
{
cb6.DropDown += new EventHandler(cb6_DropDown);
}
currentCell = DataGridView1.CurrentCell;
}
}
}
private void DataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
if (cb6 != null)
{
cb6.DropDown -= new EventHandler(cb6_DropDown);
}
}
//Добавить строку:
private void btnAddRow_Click(object sender, EventArgs e)
{
int index = DataGridView1.Rows.Count;
index++;
DataGridView1.Rows.Add();
}
//Показать форму3:
private void cb6_DropDown(object sender, EventArgs e)
{
Form3 frm3 = new Form3();
//список для ListBox1:
DataTable dt1 = ds.Tables["СПИСОК1"];
ArrayList List1 = new ArrayList();
foreach (DataRow item in dt1.Rows)
{
List1.Add(item["Полное_название"].ToString());
}
frm3.ListBox1.DataSource = null;
frm3.ListBox1.Items.Clear();
frm3.ListBox1.DataSource = List1;
if (frm3.ShowDialog(this) == DialogResult.OK)
{
DataGridViewComboBoxCell Col6 = (DataGridViewComboBoxCell)DataGridView1.Rows[DataGridView1.CurrentCell.RowIndex].Cells["Column6"];
Col6.Items.Add(frm3.getItem1());
Col6.Value = "";
Col6.Value = frm3.getItem1();
DataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
DataGridView1.EndEdit();
}
else
{
return;
}
frm3.Close();
frm3.Dispose();
}
}
}
Код формы3:
namespace Test
{
public partial class Form3 : Form
{
public Form3()
{
InitializeComponent();
btn1.DialogResult = DialogResult.OK;
btn2.DialogResult = DialogResult.Cancel;
}
private void Form3_Load(object sender, EventArgs e)
{
}
private void btn1_Click(object sender, EventArgs e)
{
}
private void btn2_Click(object sender, EventArgs e)
{
this.Close();
}
public string getItem1()
{
if (!DBNull.Value.Equals(ListBox1.SelectedItem.ToString()))
return ListBox1.SelectedItem.ToString();
else
return String.Empty;
}
}
}
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Не работает параметризированный запрос к БД SQL-ServerДля текущего узла TreeView я вывожу данные из связанной таблицы
Есть вот такой кусок БД классного журнала и требуется получить оценки студентов по ID явкиСоставил вот такой запрос однако в нём нет уникального...