用户控件:WebUserControl 添加新项-用户控件 .ascx后缀,
派生.UserControl与页面的父类不是一个 是要嵌在页面里面使用
使用方法:直接设计页面拖到要放置的位置,出现以下两项
<%@ Register src="WUC.ascx" tagname="WUC" tagprefix="uc1" %>
<uc1:WUC ID="WUC1" runat="server" />
路径 4个
1:控件路径,image,超链接,指向页面
第一步:在WUC.ascx页面上:
<img src="Image/暴风截图2015102133868160.jpg" runat="server"id="id1"/><%--变成服务器控件--%>
在控件里加两项内容;runat="server" id="id1";将控件变成变成服务器控件,用户控件下这两项内容缺一不可,
防止不是在同一级文件夹下找不到文件,服务器自动转换路径
2:样式表中用户控件路径 利用外部样式表,不要写内联的样式表
第一步:添加新项-样式表
将用的页面添加到head里面
样式表页面CSS.css
#aa {
background-image:url(../Image/暴风截图2015102133868160.jpg) ;// ../
height:100px;
100px
}
第二步:在WUC.ascx页面上:
< div id="aa" ></div>
3:外部资源路径 外部的js文件 ,需要调用函数来处理路径
第一步;添加新项-JavaScript文件
JavaScript.js页面:
alert("你好");
第二步: WUC.ascx.cs:写函数
public string ShowPath()
{
string path = "Script/JavaScript.js";
path = ResolveClientUrl(path);//获取客户端浏览器可以使用的路径url
return path;
}
第三步: WUC.ascx页面上:直接拖过控件
<script src="<%=ShowPath()%>"></script>
4:页面路径:用户控件按钮点击跳转页面
用户控件按钮点击时跳转页面:将相对路径转换为绝对路径
~ 在服务器上表示网站的根目录
protected void Button1_Click(object sender, EventArgs e)
{
Response.Redirect("~/main.aspx");
}
二:传值
AAAA1:页面向用户控件传值
a;findcontrol 传值
.aspx按钮中
//1.取页面控件按钮的值
string s = TextBox1.Text;
//2去用户控件找文本框
TextBox text = WUC1.FindControl("TextBox1") as TextBox;
//3.将页面文本值赋值给用户控件的文本框
text.Text = s;
b:属性传值
第一步:用户控件里面写一个属性;
public string Txt
{
get
{
return TextBox1.Text;
}
set
{
TextBox1.Text=value;
}
}
第二步:在页面按钮里写
protected void Button1_Click(object sender, EventArgs e)
{
//WUC1.Txt = TextBox1.Text;//用页面上取值给用户控件
TextBox1.Text = WUC1.Txt;//从用户控件里面取给页面
}
第三步:页面控件按钮点击时:
protected void Button1_Click(object sender, EventArgs e)
{
// 找到用户控件的属性
WUC1.Txt = TextBox1.Text;
}
BBBB2:用户控件向页面传值:
a:用session传值:
第一步:在用户控件:
protected void Button1_Click(object sender, EventArgs e)
{
Session["txt"] = TextBox1.Text;
}
第二步:在页面上重写onloadcomplete()事件:在子类中对父类的方法的重写,
防止数据延迟 override onloadcomplete()
// 在页面加载完成后对页面家安在完成后对父类方法的重写
protected override void OnLoadComplete(EventArgs e)
{
base.OnLoadComplete(e);
if (Session["txt"] != null)
{
TextBox1.Text = Session["txt"].ToString();
}
}
建议用 b:委托或代理;指向方法的引用,引用指向方法,,好用但是难理解;只改变指向的方法即可 delegete
Dog d=New Dog();d引用指向的是Dog类的对象
string s="ssss";s指向的是字符串
public void Show(Dog);引用指向方法,指向方法的引用
1:定义一个类
class Dog
{
public int Dog;
public void walk();
}
2:声明一个dog对象
Dog d;
3:将该引用指向Dog
d=New Dog();
4:用该引用调对象的方法
代理:指向方法的引用 和事件很像
签名:返回类型 void,参数列表string s;
y 1:定义一个代理 //用户控件里面
//加上delegate后,ShowDelegate不是原来的函数名而是代理类型名
public delegate void ShowDelegate(string s);
2:声明一个代理的引用 //用户控件里面
// 前面加上public后在其他类里面可以用
public ShowDelegate show;
3:在具体页面上页面加载时3;将代理的引用指向签名匹配的(函数)方法; 可以和手动挂事件一样 ,
+= 可以挂很多事件,事件本质就是一个特殊的代理。可以指向很多方法只要签名一致就可以,
show=new ShowDelegate(DO);
protected void Page_Load(object sender, EventArgs e)
{
//3.将该引用指向签名匹配的函数(方法)
//WUC1.Show = new WUC.ShowDelegate(ShowText);
WUC1.Show += ShowText;
}
4:用代理调用方法 在用户控件button里面
show("aa");
protected void Button1_Click(object sender, EventArgs e)
{
//.调用Show方法
string s = TextBox1.Text;
Show(s);
}
5:在实际页面写函数。签名必须和代理类型的一样
public void Do(string s)
{
TextBox1.Text=A;
}
派生.UserControl与页面的父类不是一个 是要嵌在页面里面使用
使用方法:直接设计页面拖到要放置的位置,出现以下两项
<%@ Register src="WUC.ascx" tagname="WUC" tagprefix="uc1" %>
<uc1:WUC ID="WUC1" runat="server" />
路径 4个
1:控件路径,image,超链接,指向页面
第一步:在WUC.ascx页面上:
<img src="Image/暴风截图2015102133868160.jpg" runat="server"id="id1"/><%--变成服务器控件--%>
在控件里加两项内容;runat="server" id="id1";将控件变成变成服务器控件,用户控件下这两项内容缺一不可,
防止不是在同一级文件夹下找不到文件,服务器自动转换路径
2:样式表中用户控件路径 利用外部样式表,不要写内联的样式表
第一步:添加新项-样式表
将用的页面添加到head里面
样式表页面CSS.css
#aa {
background-image:url(../Image/暴风截图2015102133868160.jpg) ;// ../
height:100px;
100px
}
第二步:在WUC.ascx页面上:
< div id="aa" ></div>
3:外部资源路径 外部的js文件 ,需要调用函数来处理路径
第一步;添加新项-JavaScript文件
JavaScript.js页面:
alert("你好");
第二步: WUC.ascx.cs:写函数
public string ShowPath()
{
string path = "Script/JavaScript.js";
path = ResolveClientUrl(path);//获取客户端浏览器可以使用的路径url
return path;
}
第三步: WUC.ascx页面上:直接拖过控件
<script src="<%=ShowPath()%>"></script>
4:页面路径:用户控件按钮点击跳转页面
用户控件按钮点击时跳转页面:将相对路径转换为绝对路径
~ 在服务器上表示网站的根目录
protected void Button1_Click(object sender, EventArgs e)
{
Response.Redirect("~/main.aspx");
}
二:传值
AAAA1:页面向用户控件传值
a;findcontrol 传值
.aspx按钮中
//1.取页面控件按钮的值
string s = TextBox1.Text;
//2去用户控件找文本框
TextBox text = WUC1.FindControl("TextBox1") as TextBox;
//3.将页面文本值赋值给用户控件的文本框
text.Text = s;
b:属性传值
第一步:用户控件里面写一个属性;
public string Txt
{
get
{
return TextBox1.Text;
}
set
{
TextBox1.Text=value;
}
}
第二步:在页面按钮里写
protected void Button1_Click(object sender, EventArgs e)
{
//WUC1.Txt = TextBox1.Text;//用页面上取值给用户控件
TextBox1.Text = WUC1.Txt;//从用户控件里面取给页面
}
第三步:页面控件按钮点击时:
protected void Button1_Click(object sender, EventArgs e)
{
// 找到用户控件的属性
WUC1.Txt = TextBox1.Text;
}
BBBB2:用户控件向页面传值:
a:用session传值:
第一步:在用户控件:
protected void Button1_Click(object sender, EventArgs e)
{
Session["txt"] = TextBox1.Text;
}
第二步:在页面上重写onloadcomplete()事件:在子类中对父类的方法的重写,
防止数据延迟 override onloadcomplete()
// 在页面加载完成后对页面家安在完成后对父类方法的重写
protected override void OnLoadComplete(EventArgs e)
{
base.OnLoadComplete(e);
if (Session["txt"] != null)
{
TextBox1.Text = Session["txt"].ToString();
}
}
建议用 b:委托或代理;指向方法的引用,引用指向方法,,好用但是难理解;只改变指向的方法即可 delegete
Dog d=New Dog();d引用指向的是Dog类的对象
string s="ssss";s指向的是字符串
public void Show(Dog);引用指向方法,指向方法的引用
1:定义一个类
class Dog
{
public int Dog;
public void walk();
}
2:声明一个dog对象
Dog d;
3:将该引用指向Dog
d=New Dog();
4:用该引用调对象的方法
代理:指向方法的引用 和事件很像
签名:返回类型 void,参数列表string s;
y 1:定义一个代理 //用户控件里面
//加上delegate后,ShowDelegate不是原来的函数名而是代理类型名
public delegate void ShowDelegate(string s);
2:声明一个代理的引用 //用户控件里面
// 前面加上public后在其他类里面可以用
public ShowDelegate show;
3:在具体页面上页面加载时3;将代理的引用指向签名匹配的(函数)方法; 可以和手动挂事件一样 ,
+= 可以挂很多事件,事件本质就是一个特殊的代理。可以指向很多方法只要签名一致就可以,
show=new ShowDelegate(DO);
protected void Page_Load(object sender, EventArgs e)
{
//3.将该引用指向签名匹配的函数(方法)
//WUC1.Show = new WUC.ShowDelegate(ShowText);
WUC1.Show += ShowText;
}
4:用代理调用方法 在用户控件button里面
show("aa");
protected void Button1_Click(object sender, EventArgs e)
{
//.调用Show方法
string s = TextBox1.Text;
Show(s);
}
5:在实际页面写函数。签名必须和代理类型的一样
public void Do(string s)
{
TextBox1.Text=A;
}