如何将Windows窗体控件传递给我创建的类?

时间:2014-02-21 15:45:36

标签: c# class

我创建了具有Control属性的类。这个想法是这个类将位于列表中,并且控件与该类的实例相关联。然而,我不能为我的生活弄清楚为什么财产不会接受任何价值观。以下是我构建属性的方法:

    public Control LinkedControl
    {
        get
        {
            return aControl;
        }
        set
        {
            aControl = value;
        }
    }

这只会导致属性在我尝试分配控件时收到值“”。

我尝试分配控件如下:

    aClass.LinkedControl = txtTextBox;

以及

    aClass.LinkedControl.Equals(txtTextBox);

这不会导致错误,但是没有任何内容可以传达给班级。

我做错了什么?

编辑:基本上我在这里想要实现的是,不是存储文本框的属性,比如textbox.text,我想在类中存储文本框本身的实例。这是一个列表<>基于程序和文本框实例的存储是参考工具。

3 个答案:

答案 0 :(得分:1)

也许你的传递空值?您可以通过属性设置器中的set breakpoint检查以检查传递的值。

您也可以看看控件的tag属性。这是另一种方式 - >您将对象分配给控件。它适用于列表(例如组合框,列表视图等)。

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.tag(v=vs.110).aspx

通过绑定源进行数据绑定也可以帮助您进行一般设计: https://www.google.com/search?q=tag+c%23+property&sourceid=ie7&rls=com.microsoft:de-at:IE-SearchBox&ie=&oe=&safe=vss#q=windows+forms+bindingsource+tutorial&rls=com.microsoft:de-at:IE-SearchBox&safe=vss

答案 1 :(得分:0)

一些事情:

  1. 在表单中,您需要将控件添加到某个UI元素(如面板或其他内容)。你可以在你的二传手中做到这一点。
  2. 您可能需要重新绘制(无效)表单以强制控件绘制。

答案 2 :(得分:0)

如果你得到一个“”这意味着你的代码工作得很好。由于Control是引用类型,因此接收“”表示控件txtTextBox当前为空。

尝试在txtTextBox中键入内容并尝试访问aClass.LinkedControl.Text并查看是否获得与txtTextBox中键入的字符串相同的字符串。

顺便说一句,你必须从txtTextBox.Text而不是txtTextBox接收“”。 txtTextBox.Text是一个字符串,而txtTextBox是一个控件。