0

我在 C++ 中有这个函数:

List<String^> ^GetCodecs()
    {
        List<String^> ^l = gcnew List<String^>;

        String ^s;

        for (int i=0;i<3333;i++)
        {
        s = gcnew String(Encoder_GetCodecName( i ));
        l->Add(s);
        }

        return l;
    }

这是在 C# 中,我得到了列表:

List<string> l = new List<string>(f.GetCodecs());

所以 l 包含 3333 个索引,其中一些填充了编解码器的名称。

我现在想做的是在 C# 中做: List l = new List(f.GetCodecs());

以某种方式使我能够做到,例如:

f.GetCodecs。

当我单击 GetCodecs 之后的点时,它将打开一个新的编解码器大列表,我将能够使用向下和向上的箭头移动,然后选择我想要的那个。

比如房产之类的。而且不像现在的列表。

编辑 !

例子:

我正在做 f.getcodecs。

在最后一点之后,我将直观地看到这样的编解码器:

mpej xvid divx

我会立即看到它们,而无需遍历它。

4

3 回答 3

2

这就是我认为您要问的问题:

当我f.GetCodecs. 在 C++ 编辑器中键入时,我希望IDE之后显示编解码器列表,以便我可以从列表中选择一个项目,而不必键入f.GetCodecs.mpegCodec.

如果这就是您想要的,那么您需要 GetCodecs 成为(或返回,如果它是一种方法)一个具有您想要的名称的字段/方法的对象。您必须选择在设计对象时出现的名称,例如,它不会基于机器上安装的编解码器。

于 2013-05-03T15:45:00.343 回答
0

您需要明确地将其设为属性:

property List<String^> ^GetCodecs
{
    List<String^>^ get()
    {
        List<String^> ^l = gcnew List<String^>;
        String ^s;

        for (int i=0;i<3333;i++)
        {
            s = gcnew String(Encoder_GetCodecName( i ));
            l->Add(s);
        }

        return l;
    }
}

我没有准备好编译器,所以我无法测试这段代码,但你明白了。更多细节可以在这里找到。

于 2013-05-03T15:50:04.623 回答
0

如果我正确解释了您的问题,CodeProject 上有一篇很好的文章向您展示了如何执行此操作:C++/CLI 属性 - 访问器方法的语法糖

于 2013-05-03T15:46:06.203 回答