C#开发学习笔记:为GridControl的底部数据导航器添加自定义按钮

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/JustWantToFly/article/details/84924918

1.为GridControl的底部数据导航器添加自定义按钮

(1).设置GridControl底部的数据导航器可见

gridControl1.UseEmbeddedNavigator = true;

(2).获取GridControl底部数据导航器的按钮集合

DevExpress.XtraEditors.NavigatorButtonsBase nbb = gridControl1.EmbeddedNavigator.Buttons;

(3).利用数据导航器的按钮集合的CustomButtons属性添加一个自定义按钮

nbb.CustomButtons.Add();

(4).设置自定义按钮的相关属性(是否可见、鼠标停顿时提示信息、图标等)

nbb.CustomButtons[nbb.CustomButtons.Count - 1].Enabled = false;
nbb.CustomButtons[nbb.CustomButtons.Count - 1].Hint = "复制新增";
nbb.CustomButtons[nbb.CustomButtons.Count - 1].Visible = true;
nbb.CustomButtons[nbb.CustomButtons.Count - 1].ImageIndex = 11;

(5).完整代码及效果

//获取或设置嵌入式数据导航器是否可见(Grid底部的翻页等按钮)
gridControl1.UseEmbeddedNavigator = true;

//获取grid底部数据导航器的按钮集合
DevExpress.XtraEditors.NavigatorButtonsBase nbb = gridControl1.EmbeddedNavigator.Buttons;

//在grid底部数据导航器中添加一个自定义按钮
nbb.CustomButtons.Add();

//设置自定义按钮的相关属性(是否可见、鼠标停顿时提示信息、图标等)
nbb.CustomButtons[nbb.CustomButtons.Count - 1].Enabled = false;
nbb.CustomButtons[nbb.CustomButtons.Count - 1].Hint = "复制新增";
nbb.CustomButtons[nbb.CustomButtons.Count - 1].Visible = true;
nbb.CustomButtons[nbb.CustomButtons.Count - 1].ImageIndex = 11;

2.为自定义按钮添加自定义图片

(1).定义一个图片集合,用于存放将要添加的图片资源

DevExpress.Utils.ImageCollection images = new DevExpress.Utils.ImageCollection();//定义一个图片集合

(2).将本地图片文件添加到项目资源中

(2.1)第一步在工程文件上右键,然后点击属性

(2.2)在属性中选中资源,然后在上方选中字符串旁边的下三角,在下拉出来的数据中选择图像;之后选择添加资源旁边的下三角,在下拉出来的数据中选择添加现有文件,在本地路径选中需要添加的图片即可

(3).将工程文件中添加的图片资源添加到前面定义的图片集合中

images.AddImage(DemoCollection.Properties.Resources.CopyAddBtn);//将工程文件的图片资源添加到图片集合中

(4).将图片集合赋值给数据导航器的Buttons属性中的ImageList属性

//将图片集合赋给数据导航器中按钮集合的ImageList
//(赋值之后,自定义按钮的图片只能用ImageList中新的图片而不能使用默认的图片集合)
nbb.ImageList = images;

注:将图片集合赋给数据导航器中按钮集合的ImageList(赋值之后,自定义按钮的图片只能用ImageList中新的图片而不能使用默认的图片集合,因此ImageIndex需要注意)

3.为自定义按钮绑定单击事件(用于编写按钮功能逻辑代码)

(1).绑定事件

//数据导航器中的按钮都是通过ButtonClick绑定事件,因为自定义按钮是没有对应的事件
//因此需要通过该事件绑定对应的按钮功能逻辑,而Buttons中的按钮也会触发该事件,但是
//如果没有添加相应的逻辑,不会影响其原有的功能
gridControl1.EmbeddedNavigator.ButtonClick += new DevExpress.XtraEditors.NavigatorButtonClickEventHandler(CustomButtons_ButtonClick);

(2)自定义事件方法

/// <summary>
/// 绑定自定义按钮事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void CustomButtons_ButtonClick(object sender, DevExpress.XtraEditors.NavigatorButtonClickEventArgs e)
{
	//判断当前数据导航器点击的按钮类型
	if (e.Button.ButtonType == DevExpress.XtraEditors.NavigatorButtonType.Custom)
	{
		//如果是自定义按钮,则判断自定义按钮的功能
		if (e.Button.Hint == "复制新增")
		{
			DataRow dr = gridView2.GetFocusedDataRow();
			gridView2.AddNewRow();
			foreach (DataColumn dc in dr.Table.Columns)
			{
				gridView2.SetFocusedRowCellValue(dc.ColumnName, dr[dc.ColumnName]);
			}
		}
	}
}

完整代码及效果图:

private void FormMyGridControl_Load(object sender, EventArgs e)
{
	DataTable dt = new DataTable();
	dt.Columns.Add("gridColumn1");
	dt.Columns.Add("gridColumn2");
	dt.Columns.Add("gridColumn3");
	dt.Columns.Add("gridColumn4");
	for (int i = 0; i < 3; i++)
	{
		dt.Rows.Add();
		for (int j = 0; j <  dt.Columns.Count; j++)
		{
			dt.Rows[i][j] = "Column" + (j + 1).ToString() + "数据";
		}
	}
	msGridControl1.DataSource = dt;
	//获取或设置嵌入式数据导航器是否可见(Grid底部的翻页等按钮)
	gridControl1.UseEmbeddedNavigator = true;

   
	//获取grid底部数据导航器的按钮集合
	DevExpress.XtraEditors.NavigatorButtonsBase nbb = gridControl1.EmbeddedNavigator.Buttons;

	DevExpress.Utils.ImageCollection images = new DevExpress.Utils.ImageCollection();//定义一个图片集合

	images.AddImage(DemoCollection.Properties.Resources.CopyAddBtn);//将工程文件的图片资源添加到图片集合中
	//将图片集合赋给数据导航器中按钮集合的ImageList
	//(赋值之后,自定义按钮的图片只能用ImageList中新的图片而不能使用默认的图片集合)
	nbb.ImageList = images;


	//在grid底部数据导航器中添加一个自定义按钮
	nbb.CustomButtons.Add();

	//设置自定义按钮的相关属性(是否可见、鼠标停顿时提示信息、图标等)
	nbb.CustomButtons[nbb.CustomButtons.Count - 1].Enabled = false;
	nbb.CustomButtons[nbb.CustomButtons.Count - 1].Hint = "复制新增";
	nbb.CustomButtons[nbb.CustomButtons.Count - 1].Visible = true;
	nbb.CustomButtons[nbb.CustomButtons.Count - 1].ImageIndex = 0;

	//数据导航器中的按钮都是通过ButtonClick绑定事件,因为自定义按钮是没有对应的事件
	//因此需要通过该事件绑定对应的按钮功能逻辑,而Buttons中的按钮也会触发该事件,但是
	//如果没有添加相应的逻辑,不会影响其原有的功能
	gridControl1.EmbeddedNavigator.ButtonClick += new DevExpress.XtraEditors.NavigatorButtonClickEventHandler(CustomButtons_ButtonClick);

}
/// <summary>
/// 绑定自定义按钮事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void CustomButtons_ButtonClick(object sender, DevExpress.XtraEditors.NavigatorButtonClickEventArgs e)
{
	//判断当前数据导航器点击的按钮类型
	if (e.Button.ButtonType == DevExpress.XtraEditors.NavigatorButtonType.Custom)
	{
		//如果是自定义按钮,则判断自定义按钮的功能
		if (e.Button.Hint == "复制新增")
		{
			DataRow dr = gridView2.GetFocusedDataRow();
			gridView2.AddNewRow();
			foreach (DataColumn dc in dr.Table.Columns)
			{
				gridView2.SetFocusedRowCellValue(dc.ColumnName, dr[dc.ColumnName]);
			}
		}
	}
}

猜你喜欢

转载自blog.csdn.net/JustWantToFly/article/details/84924918