如何从另一个类编辑主窗体中的checkedListBox?

马可

这可能是一个愚蠢的问题,但我真的不知道如何处理它。我的主表单默认类如下所示:

public partial class MainForm : Form
{
    public MainForm(bool version)
    {
        InitializeComponent();
        if(version == true)
        {
            items_checkedListBox.Items.Add("aa".ToString());
        }
        else
        {
            Controls.Remove(items_checkedListBox);
        }
    }
}

默认情况下,我的WinForm应用程序开始时Application.Run(new MainForm(true));一切正常。但是我想从另一个类更新checkedListBox,为此我需要实例化我的主表单对象并调用新对象,MainForm mainForm = new MainForm(false);但问题是checkedList控件仍然存在,即使Controls.Remove(items_checkedListBox);被执行。

当我实例化主窗体时,如何操作另一个类的控件?:(

L.Guthardt

通过做这个:

MainForm mainForm = new MainForm(false);

您创建该类型的第二个新表单MainForm并删除它的 control items_checkedListBox,但这不是您在MainForm. 此外,您没有看到您创建的第二个表单,因为您没有让它显示出来,所以不要怀疑您没有看到任何事情发生,例如删除第二个表单上的其他控件。

因此,为了操作您的控件,items_checkedListBox您需要将此控件的引用传递给您希望操作它的类。

想象一下,您将拥有另一种表单(即您的其他类),用于操作您的控件items_checkedListBox

public partial class FmManipulateControl : Form
{
    public FmManipulateControl()
    {
        InitializeComponent();
    }
}

为了能够做到这一点,将此控件的引用作为方法参数传递给构造函数:

public FmManipulateControl(Control myControl) { ... }

为了能够操作它,我们将控件的引用存储在一个字段中,例如按钮单击事件可以访问控件以更改/删除/...它。

Control controlToChange;

public FmManipulateControl(Control myControl)
{
    InitializeComponent();
    controlToChange = myControl;
}

假设我们绑定到表单中的按钮单击事件FmManipulateControl

private void button1_Click(object sender, EventArgs e)
{
    //diposes the control, so it does not exist anymore, but you can apply
    //any change to the control you wish to do 
    controlToChange.Dispose();
}

现在您要做的就是创建一个实例FmManipulateControl并将控件的引用传递给它items_checkedListBox并显示新的表单对象。

FmManipulateControl fmChangeAControl = new FmManipulateControl( items_checkedListBox);
fmChangeAControl.Show();

关于引用类型的进一步说明:

我正在谈论传递控件的引用,我想您可能想知道我的意思。我建议您阅读有关值和引用类型的内容。

我尽量保持简短。

想象一个值类型直接包含值本身:例如一个int. 对象直接包含值。

int a = 3;

a包含值3

现在让我们看看我们的控件。此 ListBox 控件items_checkedListBox不包含我们的对象控件,而是对其在内存中的位置的引用。这就是为什么它被称为引用类型。

所以当我们items_checkedListBox作为方法参数传递时,我们传递的不是对象,而是我们items_checkedListBox控件的内存位置所以我们指向同一个对象,所以我们可以操纵它。

笔记:

方法参数只是输入对象的副本,所以当我们这样做时:

FmManipulateControl fmChangeAControl = new FmManipulateControl( items_checkedListBox);

在我们的表单中,fmChangeAControl我们得到了一个 object( myControl),它是 的副本items_checkedListBox但是由于我们没有传递对象,而是一个引用,不管我们有没有副本,我们仍然指向同一个内存位置,所以我们仍然操作同一个对象。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在 C# 中从另一个类调用主窗体中的函数

来自分类Dev

如何使用PowerShell关闭主窗体并调用另一个窗体?

来自分类Dev

如何在Java中的另一个类中从主类访问int?

来自分类Dev

如何关闭另一个类的主窗口?

来自分类Dev

如何在我的主类的另一个类中调用方法?

来自分类Dev

如何从Java中的另一个类编辑数组

来自分类Dev

如何使从另一个窗体视图打开的窗体视图在odoo中只读

来自分类Dev

如何从另一个仍打开的窗体中检测何时关闭窗体?

来自分类Dev

如何使从另一个窗体视图打开的窗体视图在odoo中只读

来自分类Dev

如何使用在主类中调用/设置的另一个类在类上设置值

来自分类Dev

在另一个类的窗体上添加QGraphicsView

来自分类Dev

如何访问子窗体上的文本框控件的值,其中子窗体本身只是主窗体的另一个子窗体上的控件

来自分类Dev

如何从另一个类中定义的平面按钮的onPressed调用主类('_MyHomePageState()')中定义的方法?

来自分类Dev

如何将主类中的TCP连接变量传递给另一个JFrame类?

来自分类Dev

如何从另一个Windows窗体类重新加载ListView?

来自分类Dev

如何从另一个类中迅速调用另一个方法?

来自分类Dev

在android主活动类中调用另一个类

来自分类Dev

另一个类中的Java ActionListener-从主类访问对象

来自分类Dev

Qt - 另一个类中的主窗口类对象不能正常工作

来自分类Dev

如何将项目从一个checkedListBox移动到另一个checkedListBox

来自分类Dev

在窗体上方打开另一个窗体后如何关闭窗体

来自分类Dev

如何使用另一个类中的变量

来自分类Dev

如何使用另一个类中的变量

来自分类Dev

如何访问另一个DLL中的类?

来自分类Dev

如何扩展另一个目录中的类?

来自分类Dev

如何声明另一个类中的枚举?

来自分类Dev

在一个类中编辑变量似乎不会在另一个类中更改它

来自分类Dev

从另一个类编辑标签 (Java FX)

来自分类Dev

如何从另一个窗体Visual Basic中的标签更改文本?

Related 相关文章

  1. 1

    在 C# 中从另一个类调用主窗体中的函数

  2. 2

    如何使用PowerShell关闭主窗体并调用另一个窗体?

  3. 3

    如何在Java中的另一个类中从主类访问int?

  4. 4

    如何关闭另一个类的主窗口?

  5. 5

    如何在我的主类的另一个类中调用方法?

  6. 6

    如何从Java中的另一个类编辑数组

  7. 7

    如何使从另一个窗体视图打开的窗体视图在odoo中只读

  8. 8

    如何从另一个仍打开的窗体中检测何时关闭窗体?

  9. 9

    如何使从另一个窗体视图打开的窗体视图在odoo中只读

  10. 10

    如何使用在主类中调用/设置的另一个类在类上设置值

  11. 11

    在另一个类的窗体上添加QGraphicsView

  12. 12

    如何访问子窗体上的文本框控件的值,其中子窗体本身只是主窗体的另一个子窗体上的控件

  13. 13

    如何从另一个类中定义的平面按钮的onPressed调用主类('_MyHomePageState()')中定义的方法?

  14. 14

    如何将主类中的TCP连接变量传递给另一个JFrame类?

  15. 15

    如何从另一个Windows窗体类重新加载ListView?

  16. 16

    如何从另一个类中迅速调用另一个方法?

  17. 17

    在android主活动类中调用另一个类

  18. 18

    另一个类中的Java ActionListener-从主类访问对象

  19. 19

    Qt - 另一个类中的主窗口类对象不能正常工作

  20. 20

    如何将项目从一个checkedListBox移动到另一个checkedListBox

  21. 21

    在窗体上方打开另一个窗体后如何关闭窗体

  22. 22

    如何使用另一个类中的变量

  23. 23

    如何使用另一个类中的变量

  24. 24

    如何访问另一个DLL中的类?

  25. 25

    如何扩展另一个目录中的类?

  26. 26

    如何声明另一个类中的枚举?

  27. 27

    在一个类中编辑变量似乎不会在另一个类中更改它

  28. 28

    从另一个类编辑标签 (Java FX)

  29. 29

    如何从另一个窗体Visual Basic中的标签更改文本?

热门标签

归档