- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章ASP.NET UserControl 通信的具体实现由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
最近在SharePoint2007中用到了WebPart通信技术,个人觉得2007版本里面的ConnectionConsumer和ConnectionProvider没有2010版本那么好用,于是换了一种思想去实现通信:WebPart容器中装一个UserControl控件,这样只要UserControl可以通信,就实现了WebPart之间通信.
UserControl是用户自定义控件,我们可以在UserControl中注入事件,当一个UserControl触发某种事件,然后通过事件参数来传递数据,让其他UserControl获得这个事件传递过来的参数,实现通信.
下面简单演示一下两个UserControl进行通信 。
。
创建好一个类,两个UserControl和一个web页面.
这里分别是MyEventAgrs.cs,UCProvider.ascx,UCComsumer.ascx,Default.aspx.
MyEventAgrs.cs代码如下:
public delegate void MyEventHandle(object sender, MyEventAgrs args); public class MyEventAgrs : EventArgs { public MyEventAgrs() { } public string MyMsg { get; set; } } 。
。
public delegate void MyEventHandle(object sender, MyEventAgrs args); public class MyEventAgrs : EventArgs { public MyEventAgrs() { } public string MyMsg { get; set; } } 。
如果想传递其他对象时就只需要修改MyEventAgrs类的MyMsg方法。这里须继承EventArgs抽象类,用于存放事件参数值,另外需定义一个委托事件,然后在其他的地方使用.
。
UCProvider.ascx代码如下:
public partial class UCProvider : System.Web.UI.UserControl { public event MyEventHandle myHandle; protected void Page_Load(object sender, EventArgs e) { this.DropDownList1.SelectedIndexChanged += new EventHandler(DropDownList1_SelectedIndexChanged); } void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) { MyEventAgrs myEvent = new MyEventAgrs(); myEvent.MyMsg = DropDownList1.SelectedValue; myHandle(this, myEvent); } } 。
。
public partial class UCProvider : System.Web.UI.UserControl { public event MyEventHandle myHandle; protected void Page_Load(object sender, EventArgs e) { this.DropDownList1.SelectedIndexChanged += new EventHandler(DropDownList1_SelectedIndexChanged); } void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) { MyEventAgrs myEvent = new MyEventAgrs(); myEvent.MyMsg = DropDownList1.SelectedValue; myHandle(this, myEvent); } } 。
这里在前台页面中定义了一个DropDownList,并给DropDownList绑定了数据源,不再罗列前台页面。我想实现当用户选择DropDownList的时候将用户选择的DropDownList的值传递出去,代码里面用myHandle(this, myEvent)来初始化事件.
。
UCComsumer.ascx代码如下:
public partial class UCComsumer : System.Web.UI.UserControl { public void InitValue(string msg) { lb.Text = msg; } } 。
。
public partial class UCComsumer : System.Web.UI.UserControl { public void InitValue(string msg) { lb.Text = msg; } } 。
这里赋值的时候也可以用属性来表示,比如:
public string UC1Msg { get{return this.lb.Text;} set{this.lb.Text=value;} } 。
。
public string UC1Msg { get{return this.lb.Text;} set{this.lb.Text=value;} } 。
如果用这种方式,在引用UserControl的时候就更加方便了:
<uc2:ucConsumer runat="server" ID="uc2" UC1Msg="Defalut Value" /> 。
。
<uc2:ucConsumer runat="server" ID="uc2" UC1Msg="Defalut Value" /> 。
Default.aspx代码如下:
。
前台页面里面需要注册UserControl 。
<%@ Register TagPrefix="uc1" TagName="ucProvider" Src="~/UserControls/UCProvider.ascx" %> <%@ Register TagPrefix="uc2" TagName="ucConsumer" Src="~/UserControls/UCComsumer.ascx" %> 。
。
<%@ Register TagPrefix="uc1" TagName="ucProvider" Src="~/UserControls/UCProvider.ascx" %> <%@ Register TagPrefix="uc2" TagName="ucConsumer" Src="~/UserControls/UCComsumer.ascx" %> 。
再引用 。
。
。
<uc1:ucProvider runat="server" ID="uc1" OnmyHandle="uc1_myHandle" /> <uc2:ucConsumer runat="server" ID="uc2" /> 。
。
<uc1:ucProvider runat="server" ID="uc1" OnmyHandle="uc1_myHandle" /> <uc2:ucConsumer runat="server" ID="uc2" /> 。
后台页面:
protected void uc1_myHandle(object sender, MyEventAgrs args) { if (args != null) { uc2.InitValue(args.MyMsg); } else uc2.UC1Msg = string.Empty; } 。
。
protected void uc1_myHandle(object sender, MyEventAgrs args) { if (args != null) { uc2.InitValue(args.MyMsg); } else uc2.UC1Msg = string.Empty; } 。
这样就完成了整个过程。Default.aspx页面仅仅是一个载体或者是中间介质,所有的操作都是在两个UserControl之间进行。但是当页面第一次加载的时候,也就是页面加载好过分下拉框没有被点击之前,这里是没有值传递的.
。
最后此篇关于ASP.NET UserControl 通信的具体实现的文章就讲到这里了,如果你想了解更多关于ASP.NET UserControl 通信的具体实现的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
您好,我的 WPF UserControl 知识只有一个小时了。因此,如果有很多关于这个问题的教程或/和答案,请原谅我(老实说,我认为这无法完成,需要重新编写代码……因此我想问的原因) 因此,在创建
我看过几篇文章介绍如何删除在运行时添加的 UserControl,但我的问题有点不同。我有一个 UserControl,它由一个图像组成,右上角有一个小“x”按钮,用于从其父 Canvas 中删除自身
我有一个用户控件 UserControl1,它在其资源中定义了一种样式。该用户控件包含一个 UserControl2 实例,它引用了该样式:
我正在尝试以 How can a WPF UserControl inherit a WPF UserControl? 中提到的方式继承 WPF 中的用户控件 namespace DMS.Presen
我想创建几个具有一些通用功能的 WPF UserControl 类。出于这个原因,我想从一个新的基类派生类,而这个基类又派生自 UserControl。 我的问题是我的 C# 类是 部分 定义的,而自
这个问题在这里已经有了答案: Should a user control have its own view model? (6 个答案) How to correctly bind to a de
我有一个 UserControl,它包含另一个带有 Button 的 UserControl。我想在第一个 UserControl(父级)中向该按钮添加一个事件。我尝试这样做: void Page_I
我需要我所有的用户控件都具有一些类似的功能。所以我的用户控件是: using System.Windows.Controls; namespace WpfApplication26 { ///
以下 WPF UserControl 调用了 DataTypeWholeNumber,它有效。 现在我想创建一个名为 DataTypeDateTime 和 DataTypeEmail 等的 UserC
我有一个包含按钮和其他一些控件的 UserControl: ... 当我创建该控件的新实例时,我想获取 Button 的 Command 属性: 当然,“Th
我不确定这个问题是否已经发布,并且我已经检查了建议的 SO 链接,但似乎没有一个链接与该问题完全相关。因此,如果有人认为这可能是重复的,请发布建议答案的链接并原谅这篇文章。 解决我的问题的方法可能不止
我在 UserControl_1 中有两个 UserControl,有一个按钮可以在 MainWindow.axml 中的 StackPanel 中添加 UserControl_2。我在 UserCo
我正在开发一个由多个传感器组成的模块化项目,每个传感器都继承自一个抽象的 Sensor 类。为了配置每个传感器,我已经开始为每个传感器添加一个用户控制面板(继承自 UserControl),它在运行时
我正在使用 c#.net 我的网络表单中有不同的 View ,除了三个文本框(到达/看到/离开时间)之外,这些通常都显示不同的信息。为了尝试减少代码,我创建了一个包含这三个文本框的 UserContr
我有一个 UserControl,它有两个组件 public System.Windows.Forms.ComboBox innerComboBox; public System.Windows.Fo
我有一个包含 ListBox 的 userControl。我想从另一个 userControl 访问那个 ListBox。 例如: UserControl1.ListBox1.Items.Count;
我在更新另一个用户控件中的用户控件时遇到问题。 示例代码: UserControl MyCart1 = (UserControl)Page.FindControl("MyCart1"); Update
我在下面添加了一些屏幕截图和重现步骤。 我的数据模型有一个基类,我们称它为 CommonThing,它有很多属性。然后有几个具有附加属性的此类的特殊版本。我现在想创建一个 UI 来将数据输入到这个模型
我有一个应用程序,我需要确保在使用 ShowDialog() 单击用户控件上的按钮打开的表单将在我处理用户控件时关闭和处理。 我通过计时器在主窗体中调用 userControl.Dispose()。
我正在努力实现... 用户控件(MyRepeater) Control Start Control End 页面 Page Start Page Item Tem
我是一名优秀的程序员,十分优秀!