Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 将文本添加到C++/CLI_.net_C++ Cli - Fatal编程技术网

.net 将文本添加到C++/CLI

.net 将文本添加到C++/CLI,.net,c++-cli,.net,C++ Cli,我正在使用C++/CLI和.Net自动创建PowerPoint。我的幻灯片上有一个文本框,想添加文本,但每次都有生成错误。这是我的密码: System::String^ hi = "hello"; slides[1]->Shapes[1]->TextFrame->TextRange->Text::set(hi); 生成错误如下: error C2653: 'Text' : is not a class or namespace name 我查过错误,但似乎无法判断我做

我正在使用C++/CLI和.Net自动创建PowerPoint。我的幻灯片上有一个文本框,想添加文本,但每次都有生成错误。这是我的密码:

System::String^ hi = "hello";
slides[1]->Shapes[1]->TextFrame->TextRange->Text::set(hi);
生成错误如下:

error C2653: 'Text' : is not a class or namespace name
我查过错误,但似乎无法判断我做错了什么。如果我使用C#它似乎通过我会做:

TextRange.Text = "Hello";
所以我试着做:

TextRange->Text = "Hi";
但它抛出了以下构建错误:

error C3293: 'Text': use 'default' to access the default property (indexer) for class 'Microsoft::Office::Interop::PowerPoint::TextRange'
如何设置文本?根据MSDN,C++中的<>代码>文本<代码>的语法是:

public:
property String^ Text {
String^ get ();
void set (String^ value);
}

默认属性有相当长的麻烦历史。它们提供了很好的语法糖分,你不必给它们命名,但它们会因为产生歧义而导致蛀牙。VBA中设置关键字的原因。如果使用Set,则指定TextRange属性;如果不使用或使用Let,则指定默认属性

.NET也支持默认属性,但通过要求默认属性采用参数,消除了语法歧义。这就解决了歧义,如果参数存在,编译器可以判断您指的是默认属性。这种属性称为“索引器”。List类就是一个很好的例子,索引器被记录为“Item”属性,但实际上您并没有写入它的名称。您可以使用类似于
list[0]
的语法为第一项编制索引。非常方便,它允许您将列表视为代码中的数组

PowerPoint TextRange::Text属性会导致问题,因为它是TextRange界面的默认属性,但不接受参数。所以不能使用“Text”,因为它是默认属性名,也不能忽略它,因为它不是索引器。正如错误消息所说的那样,您可以使用默认关键字:


默认属性有相当长的麻烦历史。它们提供了很好的语法糖分,你不必给它们命名,但它们会因为产生歧义而导致蛀牙。VBA中设置关键字的原因。如果使用Set,则指定TextRange属性;如果不使用或使用Let,则指定默认属性

.NET也支持默认属性,但通过要求默认属性采用参数,消除了语法歧义。这就解决了歧义,如果参数存在,编译器可以判断您指的是默认属性。这种属性称为“索引器”。List类就是一个很好的例子,索引器被记录为“Item”属性,但实际上您并没有写入它的名称。您可以使用类似于
list[0]
的语法为第一项编制索引。非常方便,它允许您将列表视为代码中的数组

PowerPoint TextRange::Text属性会导致问题,因为它是TextRange界面的默认属性,但不接受参数。所以不能使用“Text”,因为它是默认属性名,也不能忽略它,因为它不是索引器。正如错误消息所说的那样,您可以使用默认关键字:

System::String^ hi = "hello";
slides[1]->Shapes[1]->TextFrame->TextRange->default = hi;