热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

请问这里自定义控件的委托怎么用啊?

我在窗体上放了两个自定义控件,各有一个文本框,现在想在自定义控件2中取得自定义控件1中的TEXT1的文本值写到自定义控件2中的TEXTBOX中去,有人说要通过委托,我是新手,请问该怎么写呢


我在窗体上放了两个自定义控件,各有一个文本框,
现在想在自定义控件2中取得自定义控件1中的TEXT1的文本值写到自定义控件2中的TEXTBOX中去,有人说要通过委托,我是新手,请问该怎么写呢?

自定义控件1

namespace WindowsFormsApplication10
{
    public partial class UserControl1 : UserControl
    {
        public UserControl1()
        {
            InitializeComponent();
        }
        public void ReadText1()
        {
            string a = this.textBox1.Text.ToString();
        }
      }
}

自定义控件2
namespace WindowsFormsApplication10
{
    public partial class UserControl2 : UserControl
    {
        public UserControl2()
        {
            InitializeComponent();
        }
        private void GetText1ToText2()
        {
            //想通过自定义控件1中的ReadText1()读取自定义控件1中的text1.text中的值填写到           text2中
            //如果不通过自定义控件1中的ReadText1(),有什么方法能取得text1.text中的值呢?
        }
    }
}

14 个解决方案

#1


参考下这个实现: http://www.cnblogs.com/zhili/archive/2012/10/22/Delegate.html

#2


你可以把自定义控件中的text保存到一个全局变量中的,然而你在自定义控件就可以直接访问这个变量,再赋值给自定义控件2中的textbox控件就可以的了

#3


我要是在  自定义控件2  UserControl2 中写
 public partial class UserControl2 : UserControl
    {
        public UserControl2()
        {
            InitializeComponent();
        }
        public UserControl1 user1; //定义一个自定义控件1
           private void GetText1ToText2()
        {
             user1.ReadText1();
        }
    private void button2_Click(object sender, EventArgs e)
        {
            GetText1ToText2();会出现未将对象引用设置到对象的实例
        }
请问为何会出现这个提示呢?

#4


public UserControl1 user1; //定义一个自定义控件1
没有new UserControl1
或者没有传递UserControl1属性
所以就是null了

#5


引用 4 楼 www741147 的回复:
public UserControl1 user1; //定义一个自定义控件1
没有new UserControl1
或者没有传递UserControl1属性
所以就是null了


还真是,我改成了
  user1 =new UserControl1();
            user1.ReadText1();
就能读到自定义控件1中的Text1的值了。

还想再问一下,那现在窗体上除了两个自定义控件之外,我再放一个textbox3,我怎么能取到这个textbox3的值呢?  实际上我是想知道在自定义控件中怎么去取父窗体上的别的对象,因为在我的实际问题中,我需要去取父窗体上的一个集合中的内容。

#6


不对啊
user1 =new UserControl1();
            user1.ReadText1();
这种写法是只有当设计时Textbox1中就有值时才能读到。
如果TextBox1中原来为空,当程序运行后才在里面填写上字符,那么上面的代码就取不到TextBox1中相应的值。

请大家帮我,我要怎么才能在 UserControl2中取到 UserControl1中的TextBox1里的值呢?(该值是程序运行后填写进去的,不是一开始就有)

#7


有网友说用委托,请问该怎么实现呢?

#8


可以不用委托啊,控件中写个实例化的公有方法,另外个控件去调用就可以了哦。

#9


写个属性或是方法直接去获取就行了,这样在对象外部也可以获取。
委托的话,你自定义一些事件,然后用里面的事件去调用这些事件。

#10


引用 8 楼 auos 的回复:
可以不用委托啊,控件中写个实例化的公有方法,另外个控件去调用就可以了哦。


我是新手,请问怎么写“实例化的公有方法”啊?
我要是在自定义控件2中定义一个自定义控件1,再取TEXT1的值,就会出现“未将对象引用设置到对象的实例”
我就是不知道怎么将它实例化。

#11


简单来说,你自定义控件要有本身的属性。
本身的属性可能就是你自定义控件中其他控件的值了。

比如说,你自定义控件中有TextBox,Label...
你定义属性tbxText是得到TextBox的值
属性lblText是得到Label的值

#12


可以不用委托,委托你觉得难理解就不用了,下面我给你个简单的方法
自定义控件1中写一个方法这样:
         public string ReadText1()
         {
             string a = this.textBox1.Text.ToString();
             return a;
         }
自定义控件2按钮事件调用的方法:
          private void GetText1ToText2()
         {
         textBox2.text= 自定义控件1.ReadText1();
         }

#13


我觉得楼主想问的意思是在button1中写入数据后
button2可以直接获得,不需要再进行点击之类的

其实就是两个窗体之间传递数据的问题


你需要在button1中声明一个委托变量,然后呢 在button2中去实现就ok了

#14


http://blog.csdn.net/hellboy419/article/details/9096231

推荐阅读
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 本文详细介绍了GetModuleFileName函数的用法,该函数可以用于获取当前模块所在的路径,方便进行文件操作和读取配置信息。文章通过示例代码和详细的解释,帮助读者理解和使用该函数。同时,还提供了相关的API函数声明和说明。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
author-avatar
叶子美容美体养生馆os
这个家伙很懒,什么也没留下!
RankList | 热门文章