winform项目中,如何在form中重写自定义datagridview事件?

wanbolantian 2012-06-02 03:39:11
有一个自定义控件datagridviewEx,继承自datagridview控件,其中有方法A,设置为可重写(virtual),
生成该控件,并把该控件放置在一个form上,现在想重写datagridview的方法A,要如何才能重写?
在form的代码状态下输入override,出来的智能提示只显示了form本身允许重写的事件,
看不到datagridviewEx的方法A,也就无法重写了。
...全文
347 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wanbolantian 2012-06-07
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

C# code
using System;
using System.Windows.Forms;

namespace WindowsFormsApplication4
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent()……
[/Quote]

嗯,目前我也是用委托来解决的,sp1234大侠说的用事件来解决,还没想到要如何实现。。。。
__天涯寻梦 2012-06-03
  • 打赏
  • 举报
回复
你要的这不是重写了,datagridviewEx 添加个事件吧,form1 上时,注册的方法里是 messagebox.show("123"),在 form2 时 注册的方法里是 messagebox.show("345")
SocketUp 2012-06-03
  • 打赏
  • 举报
回复
using System;
using System.Windows.Forms;

namespace WindowsFormsApplication4
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void myUserControl1_OnMyEvent(string text)
{
MessageBox.Show(text);
}

private void myUserControl2_OnMyEvent(string text)
{
MessageBox.Show(text);
}

private void button1_Click(object sender, EventArgs e)
{
myUserControl1.MyEvent("123");
myUserControl2.MyEvent("456");
}
}

public class MyUserControl : UserControl
{
public delegate void MyDelegate(String text);
public event MyDelegate OnMyEvent;

public void MyEvent(String text)
{
if (OnMyEvent != null)
{
OnMyEvent(text);
}
}
}
}
  • 打赏
  • 举报
回复
“重写”,呵呵,你也忒“灵活”了。如果一个临时顾客随便可以重写五星级大酒店的屋顶的形状,那么世界上也就没有五星级大酒店了。因为顾客并不拥有整栋酒店,它没有权利去重写它。

在程序中,当你的一个控件想通知客户一个事件,抛出事件通知就行了。就好象你的TextBox的TextChanged事件可以被多个程序注册监听,是非常轻松的。

那个叫做事件,不叫做“重写”。
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

但这样好麻烦的啊,比如这个datagridviewEx放在form1上的时候,是想重写datagridviewEx的A方法为messagebox.show("123"),放在form2上的时候,是想重写为messagebox.show("123"),按照上述解决办法不是得写N多个类?不同的类放在不同的form上?
[/Quote]

那说明你根本就不该陷进“重写”这个词儿里。忘掉重写。想别的编程概念吧。
wanbolantian 2012-06-03
  • 打赏
  • 举报
回复
上面打错了,放在form2上的时候,是想重写为messagebox.show("345")。
wanbolantian 2012-06-03
  • 打赏
  • 举报
回复
但这样好麻烦的啊,比如这个datagridviewEx放在form1上的时候,是想重写datagridviewEx的A方法为messagebox.show("123"),放在form2上的时候,是想重写为messagebox.show("123"),按照上述解决办法不是得写N多个类?不同的类放在不同的form上?
cnfixit 2012-06-02
  • 打赏
  • 举报
回复
再写个datagridviewExEx继承datagridviewEx然后override
__天涯寻梦 2012-06-02
  • 打赏
  • 举报
回复
只有再定义个类型继承 datagridviewEx 才能重写方法 A

110,499

社区成员

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

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

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