请问如何继承DataGrid类,并且重载它的PreProcessMessage?谢谢!

luoxiang2000 2003-07-20 10:14:22
我用Mydatagrid继承了datagrid控件,但是在new一个mydatagrid的时候,却发现只有我重载的那一个函数可供使用?为什么?请问怎么解决?谢谢!
class myDataGrid:DataGrid
{
void override preMessage()
{
public override bool PreProcessMessage( ref Message msg )

{

Keys keyCode = (Keys)(int)msg.WParam & Keys.KeyCode;

if(msg.Msg == WM_KEYDOWN && keyCode == Keys.Delete)

{
//这里

if(MessageBox.Show("Delete this row?", "", MessageBoxButtons.YesNo) == DialogResult.No)
return true;

}

return base.PreProcessMessage(ref msg);

}
}
}

是不是没有公有继承的问题,但是我如果改为
class myDataGrid:public DataGrid
程序会在public处报错!???
...全文
92 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
TheAres 2003-07-20
  • 打赏
  • 举报
回复
你仔细看看程序,会那个显示的DataGrid并不是a.

你改成:this.dataGrid1.Width = 1500;就管用了。

不能弹出属性,可以是你的自动弹出关闭了,也可能是IDE出什么问题了,程序这么写是没有问题的。
luoxiang2000 2003-07-20
  • 打赏
  • 举报
回复
谢谢!
可是我把你的代码完全复制导我的窗体里面,还是没有用,我写a.还是没有其它的属性、方法可以选择!
我把你的a.Width = 100;改成a.Width = 1500;,运行以后,都可以出现一个datagrid,可是没有任何变化!?
TheAres 2003-07-20
  • 打赏
  • 举报
回复
看我的例子,可以。


using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;

namespace WindowsApplication1
{
/// <summary>
/// Form5 摘要说明。
/// </summary>
public class Form5 : System.Windows.Forms.Form
{
private MyDataGrid dataGrid1;
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null;

public Form5()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();

//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
}

/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}

#region Windows 窗体设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.dataGrid1 = new WindowsApplication1.MyDataGrid();
((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).BeginInit();
this.SuspendLayout();
//
// dataGrid1
//
this.dataGrid1.DataMember = "";
this.dataGrid1.HeaderForeColor = System.Drawing.SystemColors.ControlText;
this.dataGrid1.Location = new System.Drawing.Point(40, 56);
this.dataGrid1.Name = "dataGrid1";
this.dataGrid1.Size = new System.Drawing.Size(232, 136);
this.dataGrid1.TabIndex = 0;
//
// Form5
//
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.ClientSize = new System.Drawing.Size(292, 266);
this.Controls.Add(this.dataGrid1);
this.Name = "Form5";
this.Text = "Form5";
this.Load += new System.EventHandler(this.Form5_Load);
((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).EndInit();
this.ResumeLayout(false);

}
#endregion

public static void Main()
{
Application.Run(new Form5());
}

private void Form5_Load(object sender, System.EventArgs e)
{
MyDataGrid a = new MyDataGrid();
a.Width = 100;
}
}

class MyDataGrid:DataGrid
{
public const int WM_KEYDOWN = 0x100;
public override bool PreProcessMessage( ref Message msg )

{

Keys keyCode = (Keys)(int)msg.WParam & Keys.KeyCode;

if(msg.Msg == WM_KEYDOWN && keyCode == Keys.Delete)

{
//这里

if(MessageBox.Show("Delete this row?", "", MessageBoxButtons.YesNo) == DialogResult.No)
return true;

}

return base.PreProcessMessage(ref msg);

}
}

}
luoxiang2000 2003-07-20
  • 打赏
  • 举报
回复
还是一样,我这样创建对象,还是只有一个方法:
private void Form1_Load(object sender, System.EventArgs e)
{
MyDataGrid a = new MyDataGrid();
a.
}
TheAres 2003-07-20
  • 打赏
  • 举报
回复
你定义的有问题,并且语法也有错误。这样试试。没有你说的public继承,缺省就是这样。

class MyDataGrid:DataGrid
{
public const int WM_KEYDOWN = 0x100;
public override bool PreProcessMessage( ref Message msg )

{

Keys keyCode = (Keys)(int)msg.WParam & Keys.KeyCode;

if(msg.Msg == WM_KEYDOWN && keyCode == Keys.Delete)

{
//这里

if(MessageBox.Show("Delete this row?", "", MessageBoxButtons.YesNo) == DialogResult.No)
return true;

}

return base.PreProcessMessage(ref msg);

}
}
luoxiang2000 2003-07-20
  • 打赏
  • 举报
回复
不太懂!能不能给具体的代码,谢谢!
visualcpu 2003-07-20
  • 打赏
  • 举报
回复
datagrid控件中虑拟的方法要被继承话,你要重新定义一下!
jQuery EasyUI是一组基于jQuery的UI插件集合,而jQuery EasyUI的目标就是帮助web开发者更轻松的打造出功能丰富并且美观的UI界面。开发者不需要编写复杂的javascript,也不需要对css样式有深入的了解,开发者需要了解的只有一些简单的html标签 1.3.6更新 Bug treegrid: getChecked方法不能返回正确的行. fixed. tree: 异步树,在onlyLeafCheck:true时复选框不显示正确. fixed. Improvement treegrid:继承datagrid组件所有的selecting和checking方法。 linkbutton:图标对齐方式,支持值:'top','bottom','left','right'。 linkbutton:添加"size"属性,支持值:'small','large'。 linkbutton:添加的onClick事件。 menubutton:添加"menuAlign"属性,允许用户设置顶级菜单对齐。 combo:添加"panelAlign"属性,支持值:'left','right'。 calendar:"formatter"、"styler"和"validator"选项可用于自定义日历日期。 calendar:添加的onChange事件。 panel:添加"method","queryParams"和"loader"属性。 panel:添加"onLoadError"事件。 datagrid:添加"onBeginEdit"事件。 datagrid:添加"onEndEdit"事件。 datagrid:添加"sort"方法和"onBeforeSortColumn"事件。 datagrid:"combogrid"编辑器集成到datagriddatagrid:添加"ctrlSelect"属性,允许使用ctrl+click 多选 slider:添加"converter"选项,允许用户决定如何将一个值转换为滑块的位置或滑块位置值。 searchbox:添加"disabled"属性。 searchbox:添加"disabled","enable","clear","reset"方法。 spinner:添加"readonly"属性、"readonly"方法和"onChange事件。

111,125

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧