.net 如何通过引用传递按钮';s或其他控件';s文本
应该更改按钮的文本,但不会更改。这不起作用,代码只更新对象。除此之外,它还更新了TextBox::Text属性。这不仅仅是因为这是一个字符串,正如重复链接中所暗示的那样,它也不适用于简单的值类型属性 这是因为属性不是值,您无法创建对它们的引用。当您使用它们时,它们看起来就像语法中的值。但当您声明它们时,请注意必须如何编写get和set方法。因此,要更新文本框中显示的文本,必须调用属性的set方法。这不仅仅是一个简单的变量赋值,它是一个方法调用。也许直观上很明显,请注意指定文本属性有很多副作用。你可以在屏幕上看到它 要间接调用一个方法,您需要另一个车辆,您需要一个代理。非常类似于C中的函数指针。任何关于.NET编程的介绍性书籍都会解释它们。您可以声明自己的委托类型,但更喜欢.NET framework中内置的泛型委托类型。添加对System.Core的引用,以便可以使用泛型操作委托类型。您需要首先编写一个方法来分配Text属性:.net 如何通过引用传递按钮';s或其他控件';s文本,.net,c++-cli,controls,pass-by-reference,.net,C++ Cli,Controls,Pass By Reference,应该更改按钮的文本,但不会更改。这不起作用,代码只更新对象。除此之外,它还更新了TextBox::Text属性。这不仅仅是因为这是一个字符串,正如重复链接中所暗示的那样,它也不适用于简单的值类型属性 这是因为属性不是值,您无法创建对它们的引用。当您使用它们时,它们看起来就像语法中的值。但当您声明它们时,请注意必须如何编写get和set方法。因此,要更新文本框中显示的文本,必须调用属性的set方法。这不仅仅是一个简单的变量赋值,它是一个方法调用。也许直观上很明显,请注意指定文本属性有很多副作用。你
String ^% text = button->Text ;
text = "something" ;
将使用以下示例方法更新:
private:
void updateTextBox(String^ text) {
textBox1->Text = text;
}
void Test(Action<String^>^ updater) {
updater("foo");
}
void测试(操作^updater){
更新程序(“foo”);
}
请注意此方法如何更新任何文本框,由您传递的委托对象决定哪个文本框。使用如下代码创建委托变量:
private:
void updateTextBox(String^ text) {
textBox1->Text = text;
}
void Test(Action<String^>^ updater) {
updater("foo");
}
Test(gcnewaction(this,&Form1::updateTextBox));
这无法工作,代码仅更新对象。除此之外,它还更新了TextBox::Text属性。这不仅仅是因为这是一个字符串,正如重复链接中所暗示的那样,它也不适用于简单的值类型属性
这是因为属性不是值,您无法创建对它们的引用。当您使用它们时,它们看起来就像语法中的值。但当您声明它们时,请注意必须如何编写get和set方法。因此,要更新文本框中显示的文本,必须调用属性的set方法。这不仅仅是一个简单的变量赋值,它是一个方法调用。也许直观上很明显,请注意指定文本属性有很多副作用。你可以在屏幕上看到它
要间接调用一个方法,您需要另一个车辆,您需要一个代理。非常类似于C中的函数指针。任何关于.NET编程的介绍性书籍都会解释它们。您可以声明自己的委托类型,但更喜欢.NET framework中内置的泛型委托类型。添加对System.Core的引用,以便可以使用泛型操作委托类型。您需要首先编写一个方法来分配Text属性:
String ^% text = button->Text ;
text = "something" ;
将使用以下示例方法更新:
private:
void updateTextBox(String^ text) {
textBox1->Text = text;
}
void Test(Action<String^>^ updater) {
updater("foo");
}
void测试(操作^updater){
更新程序(“foo”);
}
请注意此方法如何更新任何文本框,由您传递的委托对象决定哪个文本框。使用如下代码创建委托变量:
private:
void updateTextBox(String^ text) {
textBox1->Text = text;
}
void Test(Action<String^>^ updater) {
updater("foo");
}
Test(gcnewaction(this,&Form1::updateTextBox));
好的,我明白了。非常感谢你!好的,我明白了。非常感谢你!