CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

菜鸟提问——关于自定义控件

楼主gaofeng2000(高老师)2005-02-01 13:26:25 在 .NET技术 / ASP.NET 提问

下面这个自定义控件只能获取按钮的名称。我的问题是如何获取其中txtUser和txtPwd的text,请指教:  
  Public   Class   LoginBox  
          Inherits   System.Web.UI.WebControls.WebControl  
          Implements   IPostBackEventHandler  
   
          Event   BClick(ByVal   buttonName   As   String)  
   
          Protected   Overrides   Sub   CreateChildControls()  
                  Dim   str   As   String  
                  str   =   _  
                  "<TABLE   cellSpacing='0'   cellPadding='0'   width='200'   border='0'>"   &   _  
        "<TR>"   &   _  
          "<TD   height='30'   align='center'   width='80'   style='FONT-SIZE:   12px'>用户名</TD>"   &   _  
          "<TD   width='120'>"  
   
                  Dim   ctrlL   As   New   LiteralControl(str)  
                  Me.Controls.Add(ctrlL)  
   
                  Dim   ctrlTUser   As   New   TextBox  
                  ctrlTUser.Width   =   Unit.Pixel(100)  
                  ctrlTUser.ID   =   "txtUser"  
                  Me.Controls.Add(ctrlTUser)  
   
                  str   =   "</td></tr><tr><td   height='30'   align='center'   width='80'   style='font-size:12px'>密码</td><td   width='120'>"  
                  ctrlL   =   New   LiteralControl(str)  
                  Me.Controls.Add(ctrlL)  
   
                  Dim   ctrlTpwd   =   New   TextBox  
                  ctrlTpwd.Width   =   Unit.Pixel(100)  
                  ctrlTpwd.ID   =   "txtPwd"  
                  Me.Controls.Add(ctrlTpwd)  
   
                  str   =   "</td></tr><tr><td></td><td   align='right'>"  
                  ctrlL   =   New   LiteralControl(str)  
                  Me.Controls.Add(ctrlL)  
   
                  Dim   ctrlB   As   New   Button  
                  ctrlB.Width   =   Unit.Pixel(50)  
                  ctrlB.Text   =   "登录"  
                  ctrlB.Attributes("OnClick")   =   Page.GetPostBackEventReference(Me,   ctrlB.Text)  
                  Me.Controls.Add(ctrlB)  
   
                  str   =   "</td><tr></table>"  
                  ctrlL   =   New   LiteralControl(str)  
                  Me.Controls.Add(ctrlL)  
          End   Sub  
   
          Public   Overridable   Overloads   Sub   RaisePostBackEvent(ByVal   eventArgument   As   String)   Implements   IPostBackEventHandler.RaisePostBackEvent  
                   
                  RaiseEvent   BClick(eventArgument)  
          End   Sub  
  End   Class 问题点数:100、回复次数:19Top

1 楼hedonister(冰戈)回复于 2005-02-01 13:31:06 得分 0

vb不是很明白,顶上去吧Top

2 楼liulxmooo(娃娃)回复于 2005-02-01 13:35:39 得分 0

upTop

3 楼bidisty(浪漫草)回复于 2005-02-01 13:39:08 得分 20

若要使控件能够检查客户端发回的窗体数据,控件必须实现   System.Web.UI.IPostBackDataHandler   接口。此接口的协定允许控件确定是否在回发后改变其状态以及引发相应的事件。IPostBackDataHandler   接口包含两个方法。  
   
  [Visual   Basic]  
  Public   Interface   IPostBackDataHandler  
        Public   Function   LoadPostData(postDataKey   As   String,   _  
                          postCollection   As   NameValueCollection)   As   Boolean  
        Public   Sub   RaisePostDataChangedEvent()  
  End   Interface  
  Top

4 楼duguguiyu1984(把失败扼杀在摇篮中。。。)回复于 2005-02-01 13:42:46 得分 0

直接用     控件id.txtUser.text   不行吗?  
  你也可以遍历控件control里的控件,取出所有textbox的textTop

5 楼gaofeng2000(高老师)回复于 2005-02-01 13:54:38 得分 0

bidisty(浪漫草)   :  
  能把实现的代码帮写出来吗?我很菜:(Top

6 楼web_gus(树欲静而风不止)回复于 2005-02-01 14:04:51 得分 0

vb不知道,c#里只要在后台文件里写上  
  public   string   a  
  {  
  get{};  
  set{};  
  }  
  就可以了,帮顶。。。。。。。。。Top

7 楼meixiaofeng(yesmsn)回复于 2005-02-01 14:06:09 得分 0

找错门了吧Top

8 楼bidisty(浪漫草)回复于 2005-02-01 14:06:42 得分 20

角比我多,还让我写:(  
   
  下面代码来自己MS  
   
  回发后,页框架在发送的内容中搜索与实现   IPostBackDataHandler   的服务器控件的   UniqueID   匹配的值。然后,页框架按顺序在每个实现该接口的控件上调用   LoadPostData。LoadPostData   的两个参数是:标识控件的关键字以及包含发送数据的集合   NameValueCollection。通常实现   LoadPostData,以便在回发后更新控件的状态。以下示例说明用于自定义文本框   (TextBox)   控件的   LoadPostData   实现。  
   
  [Visual   Basic]  
  Public   Overridable   Function   LoadPostData(postDataKey   As   String,   postCollection   As   NameValueCollection)   As   Boolean  
        Dim   presentValue   As   String   =   Text  
        Dim   postedValue   As   String   =   postCollection(postDataKey)  
        If   Not   presentValue.Equals(postedValue)   Then  
              Text   =   postedValue  
              Return   True  
        End   If  
        Return   False  
  End   Function  
  如果控件状态因回发而更改,则   LoadPostData   返回   true;否则返回   false。页框架跟踪所有返回   true   的控件并在这些控件上调用   RaisePostDataChangedEvent。更改事件(如果有)就是从该方法引发的。因此,回发数据处理分两个阶段进行,即更新状态和引发更改通知。这可防止在加载回发数据过程中引发更改通知,在该过程中,更改通知可能在各控件加载回发数据之前错误地修改状态。以下代码片段显示了用于自定义文本框   (TextBox)   控件的   RaisePostDataChanged   实现。  
   
  [Visual   Basic]  
  Public   Overridable   Sub   RaisePostDataChangedEvent()  
        OnTextChanged(EventArgs.Empty)  
  End   Sub  
   
  呈现逻辑必须为控件的名称特性分配   UniqueID。否则,页框架就无法将回发数据传送给控件。如果控件发出多个窗体元素,则至少有一个元素必须具有与控件   UniqueID   对应的名称特性。有关发出多个窗体字段的自定义控件的示例,请参见撰写与呈现。以下代码片段将   UniqueID   分配给名称特性。  
   
  [Visual   Basic]  
  Protected   Overrides   Sub   Render(output   As   HtmlTextWriter)  
          output.AddAttribute(HtmlTextWriterAttribute.Type,   "text")  
          output.AddAttribute(HtmlTextWriterAttribute.Value,   me.Text)  
          output.AddAttribute(HtmlTextWriterAttribute.Name,   me.UniqueID)  
          output.RenderBeginTag(HtmlTextWriterTag.Input)  
          output.RenderEndTag()  
  End   Sub  
   
  看看可能明白吧Top

9 楼njuzgj(罐子)回复于 2005-02-01 14:47:10 得分 0

UPTop

10 楼haoco()回复于 2005-02-01 16:03:04 得分 0

upTop

11 楼minghui000(沉迷网络游戏)回复于 2005-02-01 16:28:09 得分 0

upTop

12 楼rickjelly2004(每逢佳节倍思亲-------------快乐生活)回复于 2005-02-01 16:41:23 得分 20

txtUser和txtPwd  
  的定义不是象你这样定义的,你要用  
  PRIVATE   txtUser   as   textbox  
   
  你要改ID的话,要在从在父控件的ID中写Top

13 楼rickjelly2004(每逢佳节倍思亲-------------快乐生活)回复于 2005-02-01 16:44:32 得分 20

Private   WithEvents   txtUser   As   TextBox  
  Private   WithEvents   txtPwd   As   TextBox  
   
    Public   Overrides   Property   ID()   As   String  
                                  Get  
                          Me.EnsureChildControls()  
                          mIDs   =   IIf(viewstate("id")   Is   Nothing,   MyBase.ID,   viewstate("id"))  
                          txtUser.ID   =   mIDs   &   "_textbox1"  
                          txtPwd.ID   =   mIDs   &   "_textbox2"  
                          Return   mIDs  
                  End   Get  
                      Set(ByVal   Value   As   String)  
                          viewstate("id")   =   Value  
                  End   Set  
          End   Property  
   
   
  Top

14 楼rickjelly2004(每逢佳节倍思亲-------------快乐生活)回复于 2005-02-01 16:46:35 得分 20

<DesignerSerializationVisibility(   _  
          DesignerSerializationVisibility.Content),   _  
          NotifyParentProperty(True),   _  
          PersistenceMode(PersistenceMode.InnerProperty),   _  
          Category("ChildControl"),   Description("dfasf")>   _  
          Public   ReadOnly   Property   SubKosyouLabel()   As   textbox  
                  Get  
                          Me.EnsureChildControls()  
                          Return   txtUser  
                  End   Get  
          End   PropertyTop

15 楼njuzgj(罐子)回复于 2005-02-01 16:49:11 得分 0

不懂VBTop

16 楼gaofeng2000(高老师)回复于 2005-02-01 16:55:06 得分 0

还是不太明白:(  
  不知哪里有比较系统点儿的资料,最好是中文的,请大家帮忙推荐一下。多谢!Top

17 楼rickjelly2004(每逢佳节倍思亲-------------快乐生活)回复于 2005-02-01 16:58:29 得分 0

看看我的BLOG,我上面有个翻页控件的,你看看Top

18 楼gaofeng2000(高老师)回复于 2005-02-01 17:00:00 得分 0

好的,多谢!  
  C#的也可以。  
  收工!明天再搞……Top

19 楼CreaTive1911(草草了之)回复于 2005-02-01 17:17:31 得分 0

你把这两个控件做为成员变量  
  例如:   private   ctrlTpwd     As   TextBox;  
  在   CreateChildControls()里就直接   ctrlTpwd     =   new   xxxxxx  
   
  然后在btn的事件里ctrlTpwd   .textTop

相关问题

  • 菜鸟:关于自定义控件?
  • 菜鸟发问:一个在自定义控件中事件声明的问题!
  • 如何生成有窗口,菜单,工具栏的自定义控件?
  • web自定义控件问题(dropdownlist下拉菜单是treeview形式)
  • 自定义控件
  • 自定义控件的同一个问题再次提问,急盼高手解答!!!!!!
  • 好菜的问题,怎么引用自定义控件中的一个子控件?
  • 急!!!为什么自定义控件中的TextBox老是不能得到焦点,小菜请救!
  • 使用media player 控件时,想自定义控件的右键菜单!怎么办?
  • 编写自定义控件

关键词

  • c#
  • 控件
  • 接口
  • me
  • ctrll
  • ctrltpwd
  • ctrlb
  • ctrltuser
  • txtuser
  • literalcontrol

得分解答快速导航

  • 帖主:gaofeng2000
  • bidisty
  • bidisty
  • rickjelly2004
  • rickjelly2004
  • rickjelly2004

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo