问一个关于Form的小问题,在线等待,马上给分!

whyNotHere 2009-06-01 11:05:37
在WindowApplication1工程中有一个Form2窗体,窗体上有一个button1按钮.点击事件代码如下:
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("This is Form2");
}

再新增一个窗体Form3,继承自Form2:
public partial class Form3 : Form2

此时在Form3上面可以看到Form2的那个按钮,可是这个按钮不能拖动,也不能修改任何属性,我想在Form3看到的按钮下再写如下代码:
//private void button1_Click(object sender, EventArgs e)
//{
//inherited;
//MessageBox.Show("This is Form3");
//} 也就是说我想实现点Form3上的从Form2继承的按钮,可以先Show(""This is Form2), 再Show("This is Form3");

可是写不了, 请问:C#是不是不支持这样的功能???? 非常感谢!!
...全文
64 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
yaochen009 2009-06-01
  • 打赏
  • 举报
回复
你在Program.cs里Main()函数里
把Application.Run(new Form1());
改成Application.Run(new Form3());
就可以看到Form3上的按钮是可以用的,继续Form2里的,执行的当然也是Form2的。


你说:我想实现点Form3上的从Form2继承的按钮,可以先Show(""This is Form2), 再Show("This is Form3");
这是不能的,你只能执行一次按钮点击事件函数里,这就跟类的继承样,子类override父类方法后,你调用的也只是要么父类的方法,要么子类重写后的方法,不可能2个独立方法一次调用都执行。
  • 打赏
  • 举报
回复

Form2 里面 按钮声明为(Modifiers属性 ) Protected
然后 Form3 里面这样

public Form3()
{
InitializeComponent();
base.button1.Click += new EventHandler(button1_Click);
}

void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("this is form3");
}
whyNotHere 2009-06-01
  • 打赏
  • 举报
回复
sorry,结贴完了才看到6楼的回复。
修改一下昵称 2009-06-01
  • 打赏
  • 举报
回复

//form2按钮事件
public virtual void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("This is Form2");
}
//form3重写按钮事件
public override void button1_Click(object sender, EventArgs e)
{
base.button1_Click(sender, e);
MessageBox.Show("This is Form3");
}
whyNotHere 2009-06-01
  • 打赏
  • 举报
回复
感谢1楼的回答,把button1和button1_click设置为public就可以了。
半个小时以后结贴, 看看还有没有其他人说什么。
yagebu1983 2009-06-01
  • 打赏
  • 举报
回复
没看明白啥意思。。
vrhero 2009-06-01
  • 打赏
  • 举报
回复
将按钮访问修饰符改成protected...去看看MSDN,了解一下访问修饰符的意义...
zhaoyingkuan 2009-06-01
  • 打赏
  • 举报
回复
你把申明一个public的试一下吧!
tukzer 2009-06-01
  • 打赏
  • 举报
回复
有一些办法
首先可以再FORM2中定义事件,或者将刚才的click时间生命为public ,也可以申明为public virtual

然后在继承类中重写该方法

110,534

社区成员

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

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

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