给DataGridView添加右键菜单

本人以前用PB做过一些开发,挺喜欢DATAWINDOW的。在学习C#时发现给DataGirdView加上右键菜单的效果和PB中的DATAWINDOW有相同的效果。其中数据库的操作应用的SQLDataAdatper,下面源码奉上,欢迎朋友们提出指正和意见。

 

首先,先建立一个Form窗口取名为DataGridViewDemo 从工具箱中选择控件,并设置属性如下

DataGridView   name属性 dataGridView

TextBox            name属性 txtContent

Button              name属性  btSave   Text 属性  保存

Button              name 属性 btExit     Text属性  退出

 

 

DataGridViewDemo 类代码如下

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace C15Demo
{
    public partial class DataGridViewDemo : Form
    {
        //全局变量
        private SqlDataAdapter adapter = null;
        private DataTable dt = null;
        public DataGridViewDemo()
        {
            InitializeComponent();
        }
        /// <summary>
        /// 初始化SQLDataAdapter类添加对数据表的增删改操作
        /// </summary>
        private void InitAdapter()
        {
            SqlConnection connection = new SqlConnection();
            connection.ConnectionString = "Persist Security Info=false;Integrated Security=SSPI;Initial Catalog=Northwind;server=(local)";
            adapter = new SqlDataAdapter("select ProductID,ProductName,UnitPrice,Discontinued from Products", connection);
            adapter.FillLoadOption = LoadOption.OverwriteChanges;
            //添加修改命令
            SqlCommand UpdataCommand = new SqlCommand();
            UpdataCommand.Connection = connection;
            UpdataCommand.CommandText = "Update Products set ProductName = @ProductName,UnitPrice=@UnitPrice,Discontinued = @Discontinued where ProductID=@Productid ";
            UpdataCommand.Parameters.Add("@ProductID", SqlDbType.Int, 4, "ProductID");
            UpdataCommand.Parameters.Add("@ProductName", SqlDbType.VarChar, 50, "ProductName");
            UpdataCommand.Parameters.Add("@UnitPrice", SqlDbType.Money, 20, "UnitPrice");
            UpdataCommand.Parameters.Add("@Discontinued", SqlDbType.Bit, 1, "Discontinued");
            adapter.UpdateCommand = UpdataCommand;
            //添加新增
            SqlCommand InsertCommand = new SqlCommand();
            InsertCommand.Connection = connection;
            InsertCommand.CommandText = "Insert into Products (ProductName,UnitPrice,Discontinued)values(@ProductName,@UnitPrice,@Discontinued) ";
            InsertCommand.Parameters.Add("@ProductName", SqlDbType.VarChar, 50, "ProductName");
            InsertCommand.Parameters.Add("@UnitPrice", SqlDbType.Money, 20, "UnitPrice");
            InsertCommand.Parameters.Add("@Discontinued", SqlDbType.Bit, 1, "Discontinued");
            adapter.InsertCommand = InsertCommand;
            //添加删除
          &

在C#中,要为DataGridView添加右键菜单以便对数据进行操作,你可以按照以下步骤进行: 1. **禁用默认的右键行为**[^1]: ```csharp dataGridView1.AllowUserToAddRows = false; // 如果你不想让用户自定义行,可以在这里设置 ``` 2. **创建上下文菜单(ContextMenuStrip)**: - 首先,在窗体上添加一个新的`ContextMenuStrip`控件,例如`contextMenuStrip1`。 - 设计菜单项,如`Edit`, `Delete`, 或者根据实际需求定制操作。 3. **处理右键点击事件**: ```csharp private void dataGridView1_CellMouseUp(object sender, DataGridViewCellMouseEventArgs e) { if (e.Button == MouseButtons.Right && e.RowIndex >= 0) { dataGridView1.ClearSelection(); dataGridView1.Rows[e.RowIndex].Selected = true; dataGridView1.CurrentCell = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex]; // 显示contextMenuStrip1 contextMenuStrip1.Show(MousePosition.X, MousePosition.Y); } } ``` 4. **实现菜单项功能**: - 给每个菜单项绑定事件处理程序,比如点击`Delete`按钮时执行删除行的操作。 ```csharp private void deleteToolStripMenuItem_Click(object sender, EventArgs e) { if (dataGridView1.SelectedRows.Count > 0) { // 删除当前选中的行,假设我们有一个DataTable来存储数据 DataTable dataTable = GetDataTableFromDataGrid(); // 自定义方法,从dataGridView获取DataTable dataTable.Rows.RemoveAt(dataGridView1.CurrentRow.Index); } } private DataTable GetDataTableFromDataGrid() { // 这里需要根据你的实际情况将dataGridView的数据转换为DataTable } ``` 相关问题--: 1. 如何在C#中防止DataGridView的行被用户手动添加? 2. 菜单项事件是如何与菜单项关联的? 3. 如何在DataGridView中选择多行后再通过右键菜单进行批量操作?
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值