关于接口的外部调用,急急急!大侠们帮帮忙

ODecO 2013-08-22 04:48:40
小的折腾了很久,一直都不行,关于接口的外部调用问题。
废话少说,直接进入正题。

*******************************************************************************
有两个画面,画面A,画面B
画面B提供一个对外接口,清空GridView的数据,如下所示。

//InterFACE1 是接口
public partial class FORMB: UserControl,InterFACE1
{
private static FORMB_form;

public static FORMB Instance()
{
if (_form == null || _form.IsDisposed)
_form = new ControlModelSet();

return _form;
}
//清空
public void GridClear()
{
//这里是所有控件清空
GridView1.Rows.Clear();
GridView2.Rows.Clear();
GridView3.Rows.Clear();
}
}

然后接口这么写,提供给外部
interface InterFACE1
{
void GridClear();
}

然后在画面A中,调用该接口,实现对画面B的清零
函数如下:
//调接口
InterFACE1 interfe1=FORMB.Instance();
interfe1.GridClear();


***************************************************************
以上是小的的代码,但是没有起到清零的效果,我不知道为什么,单步跟的时候,进去了,然后也清零了,为什么没有显示出来效果呢???

跪求大侠们!!!必定重谢~~~~~~~~~~
...全文
142 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
ODecO 2013-08-22
  • 打赏
  • 举报
回复
引用 17 楼 tcmakebest 的回复:
被楼主忽悠了,错误根本在别的地方。
呃呃呃,所以才能看出LS大虾的伟大啊!~
tcmakebest 2013-08-22
  • 打赏
  • 举报
回复
被楼主忽悠了,错误根本在别的地方。
智商余额不足 2013-08-22
  • 打赏
  • 举报
回复
引用 15 楼 DSnailC 的回复:
[quote=引用 14 楼 hwenycocodq520 的回复:]

documentTabStrip1.ActiveWindow = dw_resultShow;
dw_resultShow.Controls.Clear();
dw_resultShow.Controls.Add(FORMB.Instance());
大虾果然厉害,一下子就看出了病在何处! 啊啊啊,我调了一下午哪!! 我想出门买块豆腐!!! 谢谢大虾![/quote] 晕,豆腐怎么撞得晕啊,至少撞棉花
ODecO 2013-08-22
  • 打赏
  • 举报
回复
引用 14 楼 hwenycocodq520 的回复:

documentTabStrip1.ActiveWindow = dw_resultShow;
dw_resultShow.Controls.Clear();
dw_resultShow.Controls.Add(FORMB.Instance());
大虾果然厉害,一下子就看出了病在何处! 啊啊啊,我调了一下午哪!! 我想出门买块豆腐!!! 谢谢大虾!
智商余额不足 2013-08-22
  • 打赏
  • 举报
回复

documentTabStrip1.ActiveWindow = dw_resultShow;
dw_resultShow.Controls.Clear();
dw_resultShow.Controls.Add(FORMB.Instance());
ODecO 2013-08-22
  • 打赏
  • 举报
回复
引用 10 楼 hwenycocodq520 的回复:
你显示窗口B的时候是这样吗? FORMB.Instance().Show(); 还是这样? FORMB f=new FORMB(); f.Show(); 还有既然是单例的话最好把它的构造函数访问修饰符改为private,避免更多纠结的事情发生
documentTabStrip1.ActiveWindow = dw_resultShow; dw_resultShow.Controls.Clear(); dw_resultShow.Controls.Add(new FORMB() as Control); 是这样: dw_resultShow.Controls.Add(new FORMB() as Control); 控件插入
智商余额不足 2013-08-22
  • 打赏
  • 举报
回复
引用 11 楼 hwenycocodq520 的回复:
[quote=引用 9 楼 DSnailC 的回复:] [quote=引用 5 楼 hwenycocodq520 的回复:] 想看一下你显示画面B的那段代码
documentTabStrip1.ActiveWindow = dw_resultShow; dw_resultShow.Controls.Clear(); dw_resultShow.Controls.Add(new FORMB() as Control); 以上就是,FORMB是控件。[/quote] 你这样就错了啊,new FORMB()于 FORMB.Instance()是两个不同实例,改为:[/quote] dw_resultShow.Controls.Add(FORMB.Instance() as Control);
智商余额不足 2013-08-22
  • 打赏
  • 举报
回复
引用 9 楼 DSnailC 的回复:
[quote=引用 5 楼 hwenycocodq520 的回复:] 想看一下你显示画面B的那段代码
documentTabStrip1.ActiveWindow = dw_resultShow; dw_resultShow.Controls.Clear(); dw_resultShow.Controls.Add(new FORMB() as Control); 以上就是,FORMB是控件。[/quote] 你这样就错了啊,new FORMB()于 FORMB.Instance()是两个不同实例,改为:
智商余额不足 2013-08-22
  • 打赏
  • 举报
回复
你显示窗口B的时候是这样吗? FORMB.Instance().Show(); 还是这样? FORMB f=new FORMB(); f.Show(); 还有既然是单例的话最好把它的构造函数访问修饰符改为private,避免更多纠结的事情发生
ODecO 2013-08-22
  • 打赏
  • 举报
回复
引用 5 楼 hwenycocodq520 的回复:
想看一下你显示画面B的那段代码
documentTabStrip1.ActiveWindow = dw_resultShow; dw_resultShow.Controls.Clear(); dw_resultShow.Controls.Add(new FORMB() as Control); 以上就是,FORMB是控件。
ODecO 2013-08-22
  • 打赏
  • 举报
回复
引用 6 楼 rui_china 的回复:
用方法就可以实现,没看懂这块用接口的好处?
用方法怎么调用静态的函数???
ODecO 2013-08-22
  • 打赏
  • 举报
回复
引用 4 楼 tcmakebest 的回复:
半路杀出个程咬金,这是干嘛的: _form = new ControlModelSet(); 这不是 FORMB 哦
那是复制的时候复制错了 _form = new FORMB();
灬浪子灬 2013-08-22
  • 打赏
  • 举报
回复
用方法就可以实现,没看懂这块用接口的好处?
智商余额不足 2013-08-22
  • 打赏
  • 举报
回复
想看一下你显示画面B的那段代码
tcmakebest 2013-08-22
  • 打赏
  • 举报
回复
半路杀出个程咬金,这是干嘛的: _form = new ControlModelSet(); 这不是 FORMB 哦
L314896283 2013-08-22
  • 打赏
  • 举报
回复
在清空之后强制刷新一下界面试试。
ODecO 2013-08-22
  • 打赏
  • 举报
回复
引用 1 楼 hwenycocodq520 的回复:
画面B是如何显示的呢?代码全一点啊
菜单上面两个按钮 按钮A,点击显示画面A 按钮B,点击显示画面B
智商余额不足 2013-08-22
  • 打赏
  • 举报
回复
画面B是如何显示的呢?代码全一点啊

110,549

社区成员

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

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

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