【问题标题】:Accessing to control inside of usercontrol访问用户控件内部的控件
【发布时间】:2012-12-21 10:15:02
【问题描述】:

我正在制作一个只有一个文本框的用户控件,所以基本上我希望文本框的属性必须应用于整个用户控件。
这意味着(例如)我想从用户控件外部(在包含这些用户控件的主程序中)获取那些(实习生)文本框的 selectionstart 属性的值。

但除了为我的 UC 创建一个新的公共财产外,我找不到其他方法。
我想这应该是一些更好的方法,因为文本框有许多可能需要从主程序读取(或可能写入)的属性,并在 UC 中为文本框的 每个 内部属性创建另一个公共属性不要' t 对我来说似乎是“要走的路”。

关于如何从主程序获取 UC 中的内部控制属性有什么建议吗?

【问题讨论】:

    标签: vb.net


    【解决方案1】:

    您可以从文本框控件继承您的用户控件,例如:

    Class MyTextbox
          inherits TextBox
    End class
    

    然后尝试覆盖、重载和访问您想要的事件和属性。


    您可以查看以下链接,
    1- 对于textbox inheritance example
    2- 已在Satckoverflow 中回答问题

    【讨论】:

    • 抱歉,我是 .NET 新手。既然我的用户控件已经完成,那该放在哪里呢?
    • 我从您的问题中了解到,您的用户控件中只有一个文本框,因此您不需要创建用户控件,您所需要的只是让您创建的 calss 继承所有属性和文本框的事件,所以让你的类在 .vb 和 .designer.vb 文件中继承你的文本框,如上面的示例所示,假设你的类名为 MyTextbox,只需添加“继承文本框”。这将起作用
    • 是的,只有一个文本框,我在其中添加了一些新功能,我打算用它代替普通的文本框。那么,该类放在哪里呢?在用户控制中,在主程序中还是...?
    • 谢谢你。我正在从 VB6 迁移,所以这对我来说仍然太复杂了。但我相信这可以解决我的问题。
    • 是的,明白了!!! "If myUC_Name.IsSelectedAll Or myUC_Name.XTextBox1.SelectionStart = 0 Then"... 就像一个魅力!
    【解决方案2】:

    常规的 FindControl 检查不能解决这个问题吗?

    【讨论】:

    • FindControl 在 Winforms 中?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多