【问题标题】:Change value of textBox from different class?从不同的类更改文本框的值?
【发布时间】:2012-03-10 00:09:43
【问题描述】:

如果我在另一个头文件中有一个带有textbox1 和一个名为Dummy 的类的C++/CLI 表单,如果我想通过一个函数“直接”更改textbox1.Text 的值,我该怎么办?虚拟班?

【问题讨论】:

  • 你的意思是myForm->textbox1->Text = whatever;
  • @BenVoigt:是的,但我已经在 myForm.h 中包含了 Dummy.h.. 但我不能在 Dummy.h 中包含 myForm.h!
  • 将此行放入Dummy.cpp,其中包括Dummy.hmyform.h
  • @BenVoigt:谢谢它有效。怎么能接受你的回答?
  • 我得先把它写成答案。

标签: .net oop class c++-cli


【解决方案1】:

那么如何将变量作为 TextBox 对象传递给虚拟类, Dummy 进行更改并返回一个 TextBox 对象

public System.Windows.Forms.TextBox ChangeText(System.Windows.Forms.TextBox MyTextBox)
{
    MyTextBox.Text = "HELLO";
    return MyTextBox;
}

这是 C# 类中的一个方法,也许你可以使用相同的逻辑。

【讨论】:

    【解决方案2】:

    C++ 进行单遍编译。这意味着在编译器已经看到它之前你不能使用它。

    当您有两个类相互使用时,这可能会很棘手。幸运的是,C++ 还允许前向声明,它告诉编译器“这是一个类或函数的签名,稍后我将提供给你”。

    通常,按以下顺序为编译器提供以下内容:

    • 类的前向声明

      ref class Dummy;
      ref class MyForm;
      
    • 类定义

      ref class Dummy { ... };
      ref class MyForm { ... };
      
    • 类成员函数定义

      void Dummy::DoIt()
      {
          myForm->textBox1->Text = whatever;
      }
      

    通常,唯一需要的是将函数定义放在 .cpp 文件中,并确保 .cpp 文件 #includes 是每个类的头文件。对于您的问题,这意味着您应该将此行放在Dummy.cpp 中,其中包括Dummy.hmyform.h

    【讨论】:

      猜你喜欢
      • 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
      相关资源
      最近更新 更多