TransWikia.com

object sender, EventArgs e

Stack Overflow на русском Asked on August 29, 2021

private void Form1_Load(object sender, EventArgs e)

Для каких целей в параметре object sender, EventArgs?


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace CBS.ADO_NET.TableConstraints
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            string connectionString = @"Data Source=.SQLEXPRESS; Initial Catalog=ShopDB; Integrated Security=True;"; // создание строки подключения

            DataSet ds = new DataSet();
            DataTable customers = new DataTable("Customers");
            DataTable orders = new DataTable("Orders");

            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                connection.Open();

                SqlCommand customersCmd = new SqlCommand("SELECT CustomerNo, LName, FName, Address1, Phone FROM Customers", connection);
                SqlCommand ordersCmd = new SqlCommand("SELECT OrderID, CustomerNo, OrderDate FROM Orders", connection);

                SqlDataReader ordersReader = ordersCmd.ExecuteReader(); // получение DataReader для таблицы OrderDetails

                // метод LoadWithSchema позволяет на основе объекта DataReader создать объект DataTable 
                //с ограничениями для столбцов как в базе данных и заполнить эту таблицу данными
                orders.LoadWithSchema(ordersReader);
                ordersReader.Close();

                SqlDataReader customersReader = customersCmd.ExecuteReader();
                customers.LoadWithSchema(customersReader);
                customersReader.Close();
            }

            // объект DataReader не имеет информации об ограничениях объектов DataTable, таких как 
            // UniqueConstraint, ForeignKeyConstraint и PrimaryKey, поэтому прийдется их создать вручную
            customers.PrimaryKey = new DataColumn[] { customers.Columns[0] }; 
            ds.Tables.AddRange(new DataTable[] { customers, orders }); 

            // создание ограничения ForeignKeyConstraint для таблицы OrderDetails
            var FK_CustomersOrders = new ForeignKeyConstraint(customers.Columns["CustomerNo"], orders.Columns["CustomerNo"]);
            orders.Constraints.Add(FK_CustomersOrders);

            parentGridView.DataSource = customers; // связывание элемента управления parentGridView с таблицей Products
            childDataGridView.DataSource = orders; // Связывание элемента управления childDataGridView c таблицей OrderDetails
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace CBS.ADO_NET.TableConstraints
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
using System.Data;

namespace CBS.ADO_NET.TableConstraints
{
    static class TbaleExtensoinClass
    {
        // этот метод записывает данные в таблицу на основе DataReader
        public static void LoadWithSchema(this DataTable table, SqlDataReader reader)
        {
            table.CreateSchemaFromReader(reader);

            table.Load(reader); // Метод Load используется для загрузки в таблицу DataTable строк из источника данных. 
        }

        // этот метод создает ограничения на столбцы таблице на основе полученного объекта DataReader
        private static void CreateSchemaFromReader(this DataTable table, SqlDataReader reader)
        {
            DataTable schemaTable = reader.GetSchemaTable(); // Метод Возвращает таблицу описывающую метаданные столбца объекта SqlDataReader. 

            foreach (DataRow schemaRow in schemaTable.Rows)
            {
                DataColumn column = new DataColumn((string)schemaRow["ColumnName"]);    // создание столбца с именем столбца в источнике данных
                column.AllowDBNull = (bool)schemaRow["AllowDbNull"];                    // получение значения свойства AllowDBNull
                column.DataType = (Type)schemaRow["DataType"];                          // получение значения свойства DataType
                column.Unique = (bool)schemaRow["IsUnique"];                            // получение значения свойства Unique
                column.ReadOnly = (bool)schemaRow["IsReadOnly"];                        // получение значения свойства Readonly
                column.AutoIncrement = (bool)schemaRow["IsIdentity"];                   // получение значения свойства AutoIncrement

                if (column.DataType == typeof(string))                                  // если поле типа string
                    column.MaxLength = (int)schemaRow["ColumnSize"];                    // получить значение свойства MaxLength

                if (column.AutoIncrement == true)                                       // Если поле с автоинкрементом 
                { column.AutoIncrementStep = -1; column.AutoIncrementSeed = 0; }        // задать свойства AutoIncrementStep и AutoIncrementSeed

                table.Columns.Add(column);                                              // добавить созданный столбец в коллекцию Columns таблицы
            }
        }
    }
}

введите сюда описание изображения

One Answer

Это так называемый Event Handlers

Form1_Load(object sender, EventArgs e)

sender - так называемый контекст вызова, или объект который вызвал данное событие. e - используются для передачи парамеров вызова метода. EventArgs - базовый класс для классов с данными о событиях.

также можно посмотреть тут

Correct answer by Aziz Umarov on August 29, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP