怎么给Datagridview里面的控件添加事件

怎么给Datagridview里面的控件添加事件,第1张

private DataGridViewComboBoxEditingControl AAADGVComboBox = nullprivate CalendarEditingControl AAADGVCalendar = null//添加Datagridview事件EditingControlShowingprivate void BBBDGV_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e){if (e.Control is DataGridViewComboBoxEditingControl){if (BBBDGV.CurrentCell.OwningColumn.Name == "添加列的名字"){//取得被表示的控件this.AAADGVComboBox = (DataGridViewComboBoxEditingControl)e.Control// SelectedIndexChanged事件处理器追加this.AAADGVComboBox.SelectedIndexChanged += new EventHandler(AAADGVComboBox_SelectedIndexChanged)}}if (e.Control is CalendarEditingControl){if (BBBDGV.CurrentCell.OwningColumn.Name == "列的名字"){this.AAADGVCalendar = (CalendarEditingControl)e.Controlthis.AAADGVCalendar.ValueChanged += new EventHandler(AAADGVCalendar_ValueChanged)}}}//CellEndEdit事件处理器private void BBBDGV_CellEndEdit(object sender, DataGridViewCellEventArgs e){//SelectedIndexChanged事件处理器删除if (this.AAADGVComboBox != null){this.AAADGVComboBox.SelectedIndexChanged -= new EventHandler(AAADGVComboBox_SelectedIndexChanged)this.AAADGVComboBox = null}if (this.AAADGVCalendar != null){this.AAADGVCalendar.ValueChanged -= new EventHandler(AAADGVCalendar_ValueChanged)this.AAADGVCalendar = null}}//在DataGridView中表示的ComboBox的SelectedIndexChanged事件处理器private void AAADGVComboBox_SelectedIndexChanged(object sender, EventArgs e){//表示被选择的ItemDataGridViewComboBoxEditingControl cb = (DataGridViewComboBoxEditingControl)senderif (cb.SelectedItem.ToString() ){}else if (cb.SelectedItem.ToString() ){}}private void AAADGVCalendar_ValueChanged(object sendar, EventArgs e){try{if (BBBDGV.CurrentCell.OwningColumn.Name == "列名字"){CalendarEditingControl ca = (CalendarEditingControl)sendarif (ca.Value.ToString() ){}}}catch { }}其中AAA,BBB是datagridview的名字,其中要注册CellEndEdit和EditingControlShowing事件,侦听的具体 *** 作在SelectedIndexChanged和ValueChanged里面实现。

首先在程序中添加一个ContexMenuStrip1控件,给该控件添加删除项,

把 datagridview的ContexMenuStrip属性项绑定为你所添加的ContexMenuStrip1控件,然后就是你自己编写程序来 *** 作删除具体的东西了

添加列:

DataGridViewColumn column = new DataGridViewColumn()

设置column属性如:column.HeaderText = "列名"

dgv1.columns.add(column)

添加行:

DataGridViewRow row = new DataGridViewRow()

设置row属性

dgv1.rows.add(row)

(一)。自适应窗体的代码:

using System

using System.Windows.Forms

namespace WindowsFormsApplication1

{

public partial class Form1 : Form

{

//1.声明自适应类实例

AutoSizeFormClass asc = new AutoSizeFormClass()

public Form1()

{

InitializeComponent()

//如果加入"皮肤",则不能在Form1_Load中记录控件的大小和位置,因为有些控件如dataGridView的子控件还未完成

//而要在在Form1_SizeChanged中,第一次改变时,记录控件的大小和位置

this.skinEngine1.SkinFile = "EmeraldColor1.ssk"

}

//2. 为窗体添加Load事件,并在其方法Form1_Load中,调用类的初始化方法,记录窗体和其控件的初始位置和大小

private void Form1_Load(object sender, EventArgs e)

{

// asc.controllInitializeSize(this)

}

//3.为窗体添加SizeChanged事件,并在其方法Form1_SizeChanged中,调用类的自适应方法,完成自适应

private void Form1_SizeChanged(object sender, EventArgs e)

{

asc.controlAutoSize(this)

//  this.WindowState = (System.Windows.Forms.FormWindowState)(2)//记录完控件的初始位置和大小后,再最大化

}

}

}

(二)。自适应类的代码

using System.Collections.Generic

using System.Windows.Forms

namespace WindowsFormsApplication1

{

class AutoSizeFormClass

{

//(1).声明结构,只记录窗体和其控件的初始位置和大小。

public struct controlRect

{

public int Left

public int Top

public int Width

public int Height

}

实际 *** 作起来可能没有你想象的那么简单,你需要响应Form Resize之类的事件,然后根据事件,实时逐个调整控件的大小。在WPF中就简单多了。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11699612.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-18
下一篇2023-05-18

发表评论

登录后才能评论

评论列表(0条)

    保存