int rowIndex = dgvDataQuery.HitTest(e.X, e.Y).RowIndex;
时间: 2024-04-07 13:27:54 浏览: 150
这段代码的作用是获取鼠标点击位置所在的行的索引。`dgvDataQuery` 是一个 DataGridView 控件,`HitTest` 方法可以获取鼠标点击位置所在的单元格,它的返回值是一个 DataGridView.HitTestInfo 类型的对象,其中包含了行、列的索引等信息。这里调用了 `HitTest` 方法并传入鼠标点击事件的 X、Y 坐标,然后获取返回结果中的行索引,赋值给 `rowIndex` 变量。这个代码通常用于处理 DataGridView 控件的鼠标点击事件,以获取用户点击的行信息并进行后续处理。
相关问题
c#.连接数据库图设计一个Windows应用程序完成对教师信息的增删改查操作,鼠标右键可 以选中相应的行进行删除操作,要代码
以下是一个简单的 C# Windows 应用程序示例,它实现了对教师信息的增删改查操作和鼠标右键删除操作。请注意,该示例仅供参考,您需要根据自己的具体需求进行修改和扩展。
首先,在 Visual Studio 中创建一个 Windows Forms 应用程序项目,并添加一个 DataGridView 控件和四个按钮(新增、修改、删除和查询)到窗体中。
然后,使用以下代码实现对数据库的连接和操作:
```csharp
using System;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;
namespace TeacherManagementSystem
{
public partial class MainForm : Form
{
private readonly string connectionString = "Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=TeacherDB;Integrated Security=True";
private readonly SqlConnection connection;
private SqlDataAdapter dataAdapter;
private DataTable dataTable;
public MainForm()
{
InitializeComponent();
// 创建数据库连接
connection = new SqlConnection(connectionString);
}
// 窗体加载时,从数据库中加载教师信息
private void MainForm_Load(object sender, EventArgs e)
{
LoadTeacherData();
}
// 从数据库中加载教师信息
private void LoadTeacherData()
{
try
{
// 创建DataAdapter对象,并执行Select语句
dataAdapter = new SqlDataAdapter("SELECT * FROM Teachers", connection);
dataTable = new DataTable();
dataAdapter.Fill(dataTable);
// 将DataTable绑定到DataGridView控件
dataGridView.DataSource = dataTable;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
// 新增教师信息
private void btnAdd_Click(object sender, EventArgs e)
{
try
{
// 打开数据库连接
connection.Open();
// 创建SqlCommand对象,并执行Insert语句
SqlCommand command = new SqlCommand("INSERT INTO Teachers (Name, Gender, Birthday, Department) VALUES (@Name, @Gender, @Birthday, @Department)", connection);
command.Parameters.AddWithValue("@Name", txtName.Text);
command.Parameters.AddWithValue("@Gender", cboGender.Text);
command.Parameters.AddWithValue("@Birthday", dtpBirthday.Value);
command.Parameters.AddWithValue("@Department", txtDepartment.Text);
command.ExecuteNonQuery();
// 刷新DataGridView控件
LoadTeacherData();
// 清空文本框和下拉框
txtName.Clear();
cboGender.SelectedIndex = -1;
dtpBirthday.Value = DateTime.Now;
txtDepartment.Clear();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
// 关闭数据库连接
connection.Close();
}
}
// 修改教师信息
private void btnUpdate_Click(object sender, EventArgs e)
{
try
{
// 获取当前选中的行
int rowIndex = dataGridView.CurrentCell.RowIndex;
// 获取当前选中的行的教师编号
int teacherId = int.Parse(dataGridView.Rows[rowIndex].Cells[0].Value.ToString());
// 打开数据库连接
connection.Open();
// 创建SqlCommand对象,并执行Update语句
SqlCommand command = new SqlCommand("UPDATE Teachers SET Name=@Name, Gender=@Gender, Birthday=@Birthday, Department=@Department WHERE TeacherId=@TeacherId", connection);
command.Parameters.AddWithValue("@Name", txtName.Text);
command.Parameters.AddWithValue("@Gender", cboGender.Text);
command.Parameters.AddWithValue("@Birthday", dtpBirthday.Value);
command.Parameters.AddWithValue("@Department", txtDepartment.Text);
command.Parameters.AddWithValue("@TeacherId", teacherId);
command.ExecuteNonQuery();
// 刷新DataGridView控件
LoadTeacherData();
// 清空文本框和下拉框
txtName.Clear();
cboGender.SelectedIndex = -1;
dtpBirthday.Value = DateTime.Now;
txtDepartment.Clear();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
// 关闭数据库连接
connection.Close();
}
}
// 删除教师信息
private void btnDelete_Click(object sender, EventArgs e)
{
try
{
// 获取当前选中的行
int rowIndex = dataGridView.CurrentCell.RowIndex;
// 获取当前选中的行的教师编号
int teacherId = int.Parse(dataGridView.Rows[rowIndex].Cells[0].Value.ToString());
// 打开数据库连接
connection.Open();
// 创建SqlCommand对象,并执行Delete语句
SqlCommand command = new SqlCommand("DELETE FROM Teachers WHERE TeacherId=@TeacherId", connection);
command.Parameters.AddWithValue("@TeacherId", teacherId);
command.ExecuteNonQuery();
// 刷新DataGridView控件
LoadTeacherData();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
// 关闭数据库连接
connection.Close();
}
}
// 查询教师信息
private void btnSearch_Click(object sender, EventArgs e)
{
try
{
// 创建DataAdapter对象,并执行Select语句
dataAdapter = new SqlDataAdapter("SELECT * FROM Teachers WHERE Name LIKE '%" + txtSearch.Text + "%'", connection);
dataTable = new DataTable();
dataAdapter.Fill(dataTable);
// 将DataTable绑定到DataGridView控件
dataGridView.DataSource = dataTable;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
// DataGridView控件的右键菜单
private void dataGridView_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
// 获取当前鼠标所在的行
DataGridView.HitTestInfo hitTestInfo = dataGridView.HitTest(e.X, e.Y);
if (hitTestInfo.Type == DataGridViewHitTestType.Cell)
{
dataGridView.CurrentCell = dataGridView.Rows[hitTestInfo.RowIndex].Cells[hitTestInfo.ColumnIndex];
// 显示右键菜单
contextMenuStrip.Show(dataGridView, e.X, e.Y);
}
}
}
// 右键菜单的删除操作
private void deleteToolStripMenuItem_Click(object sender, EventArgs e)
{
if (MessageBox.Show("确定要删除该教师信息吗?", "确认删除", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
btnDelete_Click(sender, e);
}
}
}
}
```
在上述代码中,我们使用了 ADO.NET 技术连接到了一个名为 TeacherDB 的数据库,并实现了增删改查操作。其中,使用了 SqlDataAdapter 类和 DataTable 类来从数据库中检索教师信息并将其显示在 DataGridView 控件中,使用了 SqlCommand 类和 SQL 语句来执行数据库操作,使用了 contextMenuStrip 控件和 MouseDown 事件来实现鼠标右键删除操作。
请注意,在实际应用中,您需要根据自己的具体需求进行修改和扩展,并且需要确保程序的安全性和稳定性。
阅读全文