Добавление значения в DataGridViewComboBox из формы

206
06 февраля 2020, 22:10

На форме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;
        }
    }
}
READ ALSO
transform.RotateAround

transform.RotateAround

Как мне сделать, чтоб вместо zero было относительно родителя?

242
Параметризированный запрос SQL-Server

Параметризированный запрос SQL-Server

Не работает параметризированный запрос к БД SQL-ServerДля текущего узла TreeView я вывожу данные из связанной таблицы

248
Кодировка польских литер

Кодировка польских литер

Есть проблема - магазин Prestashop 17

287
Помогите понять. SQL JOIN. Отсутствует уникальный столбец\ Данное выделение не содержит уникального столбца

Помогите понять. SQL JOIN. Отсутствует уникальный столбец\ Данное выделение не содержит уникального столбца

Есть вот такой кусок БД классного журнала и требуется получить оценки студентов по ID явкиСоставил вот такой запрос однако в нём нет уникального...

281