Abuamer Ответов: 1

Как получить выбранные ячейки строк из datagridview в привязанный datagridview в другой форме?


я должен принять форму ... первый form_Items_Transaction с элементом управления datagridview (Dgv_transactions), а второй-Form_Search_Items с элементом управления datagridview(Dgv_Search)... у меня есть fill dgv_transactions с datatable.поэтому я хочу заполнить столбец 7 из dgv_transaction столбцом 1 в dgv_Search с событием Dgv_Transaction_KeyDown.но проблема в том, что когда я закрываю Form_Search_Items, в столбце[7] в Dgv_Search нет никаких изменений.

может ли кто-нибудь помочь плз?

Что я уже пробовал:

private void Dgv_Transaction_KeyDown(object sender, KeyEventArgs e)
        {
            try
            {
                if (Dgv_Transaction.CurrentRow.Cells[7].Selected == true)
                {
                    if (e.KeyCode == Keys.Escape)
                    {
                        string col1;
                        string col2;
                       
                        
                        DataTable dtcust = Class_Main_Units.StoredProcedure_Search_Items();

                        Form_Search cust = new Form_Search_Units();
                        cust.Dgv_Search.DataSource = dtcust;
                        
                        cust.ShowDialog();

                        col1 = cust.Dgv_Search.CurrentRow.Cells[0].Value.ToString();
                        col2 = cust.Dgv_Search.CurrentRow.Cells[1].Value.ToString();
                        

                        Dgv_Transaction.CurrentRow.Cells[7].Value = col2;
                        Dgv_Transaction.CurrentRow.Cells[6].Value = col1;

                    }
                }
            }
            catch
            {

            }
            
        }

1 Ответов

Рейтинг:
6

RickZeeland

Вы могли бы поставить DataTable и BindingSource в Статический класс, то вы можете получить к ним доступ из всех форм.

Программы.в CS

using System;
using System.Windows.Forms;
using System.ComponentModel;

namespace TestForm1
{
    static class Program
    {
        // for Form10 DataGridView.
        public static BindingList<MyClass> masterBindingList;

        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            // Test data grid with BindingList.
            Application.Run(new Form10());
        }

        /// <summary>
        /// For Form10:
        /// Simple class with one string.
        /// </summary>
        public class MyClass
        {
            public string Title { get; set; }
        }
    }
}

Форма 10.cs
using System;
using System.ComponentModel;
using System.Windows.Forms;

namespace TestForm1
{
    /// <summary>
    /// Shows how to share a BindingList<> between two forms.
    /// </summary>
    public partial class Form10 : Form
    {
        public Form10()
        {
            InitializeComponent();
            this.Init();
        }

        private void Init()
        {
            Program.masterBindingList = new BindingList<Program.MyClass>();
            this.dataGridViewMaster.DataSource = Program.masterBindingList;
        }

        private void ButtonAddRowClick(object sender, EventArgs e)
        {
            var rowIndex = this.dataGridViewMaster.RowCount;
            this.AddRow(rowIndex);
            // this.UpdateRow(rowIndex);
            this.ScrollToRow(rowIndex);
        }

        /// <summary>
        /// Add new row via the BindingList.
        /// </summary>
        private void AddRow(int rowIndex)
        {
            var myRow = new Program.MyClass { Title = "Row " + rowIndex.ToString() };
            Program.masterBindingList.Add(myRow);
        }

        private void ScrollToRow(int rowIndex)
        {
            this.dataGridViewMaster.ClearSelection();
            this.dataGridViewMaster.FirstDisplayedScrollingRowIndex = rowIndex;
            this.dataGridViewMaster.Focus();
        }

        private void buttonShow_Click(object sender, EventArgs e)
        {
            var form10b = new Form10b();
            form10b.ShowDialog();
        }
    }
}

Форма 10b.cs
using System.Windows.Forms;

namespace TestForm1
{
    public partial class Form10b : Form
    {
        public Form10b()
        {
            InitializeComponent();
            dataGridView1.DataSource = Program.masterBindingList;
        }
    }
}


Abuamer

спасибо за вашу заботу, но не могли бы вы привести мне пример

Abuamer

Большое спасибо!. это было так полезно.