Поддерживает ли проводник Windows 7 многострочный текст для настраиваемого столбца? - PullRequest
2 голосов
/ 28 сентября 2011

Я реализовал собственный обработчик свойств для проводника Windows, используя .NET 4.0.Все работает, кроме столбцов с несколькими значениями, которые показаны в одной строке, разделенной символом «;».Я попытался установить атрибут управления drawControl на Default, MultiLineText и MultiValueText, но все же не повезло.Чего я хочу добиться, так это чтобы каждое значение было в отдельной строке, а не разделено знаком «;».

Вот propertyDescription зарегистрированного мной файла propdesc:

<propertyDescription name="Test.Property" formatID="{A5D0A4B0-EC4D-43DA-86F6-55448D9E9430}" propID="555">
  <description>Description</description>
  <searchInfo inInvertedIndex="True" isColumn="True" columnIndexType="OnDisk"/>
  <typeInfo type="Any" multipleValues="True" isViewable="True" isQueryable="True" isInnate="False"/>
  <labelInfo label="Test Property"/>
  <displayInfo displayType="String" mnemonics="testproperty">
    <drawControl control="MultiLineText" />
  </displayInfo>
</propertyDescription>

Вот реализация метода GetValue интерфейса IPropertyStore:

[DllImport("propsys.dll", CharSet = CharSet.Unicode, SetLastError = true)]
    internal static extern void InitPropVariantFromStringVector([In, Out] string[] prgsz, uint cElems, out PropVariant ppropvar);

public int GetValue(ref PropertyKey key, out PropVariant pv)
{

    pv = new PropVariant();
    pv.variantType = (short)(VarEnum.VT_VECTOR | VarEnum.VT_LPWSTR);
    string[] stringArray = new string[] { "Test1", "Test2" };
    InitPropVariantFromStringVector(stringArray, (uint)stringArray.Length, out pv);
    return HR_OK;
}
...