原贴:
http://community.csdn.net/Expert/topic/5204/5204316.xml?temp=.9985926再简单一点:
如何在用户控件里面的Buttion点击后来执
protected void UsBtn_Click(object sender, EventArgs e)
{
...
//
? // 调用主页面的Btn_Click
? // 调用主页面的SetText
}protected void Btn_Click(object sender, EventArgs e)
{
T1.Text="Btn_Click";
}
public void SetText(string value)
{
T1.Text="Void";
}
http://community.csdn.net/Expert/topic/5204/5204316.xml?temp=.9985926再简单一点:
如何在用户控件里面的Buttion点击后来执
protected void UsBtn_Click(object sender, EventArgs e)
{
...
//
? // 调用主页面的Btn_Click
? // 调用主页面的SetText
}protected void Btn_Click(object sender, EventArgs e)
{
T1.Text="Btn_Click";
}
public void SetText(string value)
{
T1.Text="Void";
}
解决方案 »
- WebPartZone中的verb小按钮为什么在浏览器里不显示?
- XML文件的格式是怎样的
- gredview与checkbox组合标题显示的问题
- vs2005运行乱码,设计时正确,该怎么解决?
- 表格A中嵌套表格B,当B大于A的时候,怎么能让A出现滚动条?
- ASP.net中如何设置URL上的参数!
- WebControl超链接控件(HyperLink)问题。
- 授予 ASP.NET 对文件的写访问权
- 用asp.net2.0开发报表用水晶报表好还是Reporting Service好?
- 计数器出错,大家看看
- 在asp.net2.0 怎样使用另外一个cs文件中的类?
- 非常急切,我没有分了!动态生成的控件为什么PostBack以后就找不到了!
fuction Mainpage()
{
//主页面按钮ID
Btn.click();
}
public interface iDoAction
{
void SetText(string Value);
}
2.调用的页面继承接口如 WebForm1 : System.Web.UI.Page,iDoAction
同时完成接口的实现即L
public void SetText(string value)
{
T1.Text="Void";
}3.在用户控件的click事件中.private void Button1_Click(object sender, System.EventArgs e)
{
((iDoAction)this.Page).SetText("EEEEEEE");
}
找不到类型或命名空间名称“iDoAction”(是否缺少 using 指令或程序集引用?)
ascx.cs:
public partial class uc : System.Web.UI.UserControl, iDoAction
{
public void Button1_Click(object sender, EventArgs e)
{
((iDoAction)this.Page).SetText("EEEEEEE");
}
}
aspx:
public partial class _Default : System.Web.UI.Page
{
public interface iDoAction
{
void SetText(string Value);
}
public void SetText(string value)
{
T1.Text = "Void";
}
}
{
void SetText(string Value);
}
这个是一个接口,不能写在类里面,它和类是同级别的,单独做个文件,或写在class的外面.
继承接口public partial class _Default : System.Web.UI.Page,iDoAction
public partial class uc : System.Web.UI.UserControl
{
public void Button1_Click(object sender, EventArgs e)
{
((iDoAction)this.Page).SetText("EEEEEEE");
}
}
里面提示找不到类型或命名空间名称“iDoAction”(是否缺少 using 指令或程序集引用?)
A中有一个function 如:Example()
页面中重写这个方法,在控件的btn_click中这样写:
(this.Page as A).Example();
{
this.Response.Write("<script>window.opener.document.all('Button1').click();window.close();</script>");
}
public partial class _Default : System.Web.UI.Page, iDoAction
{
public void SetText(string value)
{
T1.Text = "Void";
}
}
class1.cs
public class Class1
{
public Class1()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public interface iDoAction
{
void SetText(string Value);
}
}
ascx.cs
public partial class uc : System.Web.UI.UserControl
{
public void Button1_Click(object sender, EventArgs e)
{
((iDoAction)this.Page).SetText("EEEEEEE");
}
}
public class Class1
{
public Class1()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public interface iDoAction
{
void SetText(string Value);
}
}
================把class1.cs中的所有内容去掉.
只有: public interface iDoAction
{
void SetText(string Value);
}==================
class1.cs
这里面要怎么写?
是不是要每一个都要写一个事件比如我再加一个GetText,那么是不是
class1.cs:
public interface iDoAction
{
void SetText(string Value);
}
public interface iDoAction1
{
void GetText(string Value);
}
aspx.cs:
public partial class _Default : System.Web.UI.Page, iDoAction,iDoAction1
还是有更简单的方法
{
void SetText(string Value);
string GetText();
}
ascx.cs:
public void SetText(string value)
{
T1.Text = "Void";
}
aspx.cs:
((uc)UC1).SetText("OK");
------------------------------------
这样就可以了,为什么用户控件调用主页面就这么复杂谢谢
public evetn EventHandler click;
protected void UsBtn_Click(object sender, EventArgs e)
{
if( click != null )
click(sender,e);
}
aspx.cspublic page_Load( ... )
{
youracsx1.click+=new EventHandler( page_event );
}
如果非要在调用对象中使用某些代码.可以采取事件通知方式.
可能初学者最难发现的就是需要强制类型转换,否则就无法发现事件的正确写法。以后对任何两个组件之间的关系都要解耦,如果A了解B的接口,那么就绝对不要B了解A的接口(某些模式下甚至双方都不能相互要求),这样就基本上容易进行插件的设计了。如果结构上相互耦合,会在对象比较多的时候有解不开的矛盾来。
public partial class uc : System.Web.UI.UserControl
{
public event EventHandler click;
public void Button1_Click(object sender, EventArgs e)
{
if( click != null )
click(sender,e);
}
}
aspx:
public void SetText(string value)
{
T1.Text = "Void";
}
protected void Page_Load(object sender, EventArgs e)
{
Uc1.click += new EventHandler(??);
}
我用上面的page_event 出错改大小写也不行
谢谢
我是写在用户控件ascx里面
new EventHandler( page_event );
{
if(this.clickl != null)
this.clickl(sender,e);
}
{
UC1.clickl +=new EventHandler(UC1_clickl);
} private void UC1_clickl(object sender, EventArgs e)
{
//处理.
}
aspx:
public void SetText(string value)
{
T1.Text = "Void";
} protected void Page_Load(object sender, EventArgs e)
{
Uc1.click += new EventHandler(Uc1_click);
}
ascx:
public event EventHandler click;
public void Button1_Click(object sender, EventArgs e)
{
if( click != null )click(sender,e);
}
Uc1.click += new EventHandler(Uc1_click);
系统会自动写上这个事件的实现.否则就要手工写了.Uc1_click事件是你需要的关键啊,怎么忘记了写呢?
private void Uc1_click(object sender, EventArgs e)
{
//处理.
}
sp1234(Ajax比赛会是一个淘汰赛吗?)
两个牛人的分就在前面两个贴
这个贴给其他参于的人谢谢