Практическое руководство. Обработка ошибок, связанных с вводом данных в элемент управления DataGridView, в Windows Forms
В примере кода ниже показано, как использовать элемент управления DataGridView для сообщения пользователю об ошибках ввода данных.
Полное описание этого примера кода см. в разделе Пример. Обработка ошибок, связанных с вводом данных с помощью элемента управления DataGridView, в Windows Forms.
Пример
using System;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;
public class Form1 : System.Windows.Forms.Form
{
private DataGridView dataGridView1 = new DataGridView();
private BindingSource bindingSource1 = new BindingSource();
public Form1()
{
// Initialize the form.
this.dataGridView1.Dock = DockStyle.Fill;
this.Controls.Add(dataGridView1);
this.Load += new EventHandler(Form1_Load);
}
private void Form1_Load(System.Object sender, System.EventArgs e)
{
// Attach the DataError event to the corresponding event handler.
this.dataGridView1.DataError +=
new DataGridViewDataErrorEventHandler(dataGridView1_DataError);
// Initialize the BindingSource and bind the DataGridView to it.
bindingSource1.DataSource = GetData("select * from Customers");
this.dataGridView1.DataSource = bindingSource1;
this.dataGridView1.AutoResizeColumns(
DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader);
}
private void dataGridView1_DataError(object sender,
DataGridViewDataErrorEventArgs e)
{
// If the data source raises an exception when a cell value is
// commited, display an error message.
if (e.Exception != null &&
e.Context == DataGridViewDataErrorContexts.Commit)
{
MessageBox.Show("CustomerID value must be unique.");
}
}
private static DataTable GetData(string selectCommand)
{
string connectionString =
"Integrated Security=SSPI;Persist Security Info=False;" +
"Initial Catalog=Northwind;Data Source=localhost;Packet Size=4096";
// Connect to the database and fill a data table, including the
// schema information that contains the CustomerID column
// constraint.
SqlDataAdapter adapter =
new SqlDataAdapter(selectCommand, connectionString);
DataTable data = new DataTable();
data.Locale = System.Globalization.CultureInfo.InvariantCulture;
adapter.Fill(data);
adapter.FillSchema(data, SchemaType.Source);
return data;
}
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new Form1());
}
}
Imports System.Data
Imports System.Data.SqlClient
Imports System.Windows.Forms
Public Class Form1
Inherits System.Windows.Forms.Form
Private WithEvents dataGridView1 As New DataGridView()
Private bindingSource1 As New BindingSource()
Public Sub New()
' Initialize the form.
Me.dataGridView1.Dock = DockStyle.Fill
Me.Controls.Add(dataGridView1)
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Me.Load
' Initialize the BindingSource and bind the DataGridView to it.
bindingSource1.DataSource = GetData("select * from Customers")
Me.dataGridView1.DataSource = bindingSource1
Me.dataGridView1.AutoResizeColumns( _
DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader)
End Sub
Private Sub dataGridView1_DataError(ByVal sender As Object, _
ByVal e As DataGridViewDataErrorEventArgs) _
Handles dataGridView1.DataError
' If the data source raises an exception when a cell value is
' commited, display an error message.
If e.Exception IsNot Nothing AndAlso _
e.Context = DataGridViewDataErrorContexts.Commit Then
MessageBox.Show("CustomerID value must be unique.")
End If
End Sub
Private Shared Function GetData(ByVal selectCommand As String) As DataTable
Dim connectionString As String = _
"Integrated Security=SSPI;Persist Security Info=False;" + _
"Initial Catalog=Northwind;Data Source=localhost;Packet Size=4096"
' Connect to the database and fill a data table, including the
' schema information that contains the CustomerID column
' constraint.
Dim adapter As New SqlDataAdapter(selectCommand, connectionString)
Dim data As New DataTable()
data.Locale = System.Globalization.CultureInfo.InvariantCulture
adapter.Fill(data)
adapter.FillSchema(data, SchemaType.Source)
Return data
End Function
<STAThread()> _
Shared Sub Main()
Application.EnableVisualStyles()
Application.Run(New Form1())
End Sub
End Class
Компиляция кода
Для этого примера требуются:
- ссылки на сборки System, System.Data, System.Windows.Forms и System.XML.
Безопасность .NET Framework
Хранение конфиденциальных сведений (например, пароля) в строке подключения может повлиять на безопасность приложения. Использование проверки подлинности Windows (также называемой встроенными средствами безопасности) — более безопасный способ управления доступом к базе данных. Дополнительные сведения см. в разделе Защита сведений о подключении.
См. также
- DataGridView
- BindingSource
- Пошаговое руководство. Обработка ошибок, связанных с вводом данных в элемент управления DataGridView, в Windows Forms
- Ввод данных с помощью элемента управления DataGridView в Windows Forms
- Пример. Проверка данных элемента управления DataGridView в Windows Forms
- Защита сведений о подключении
.NET Desktop feedback
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по