Я занимаюсь разработкой программы, которая использует визуальные стили.Метод Main выглядит следующим образом:
[STAThread]
static void Main() {
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form());
}
Программа также работает как плагин другого приложения и запускается, в данном случае, через COM.Проблема в том, что вызывающее приложение (COM-клиент) не вызывает EnableVisualStyles и находится вне моего контроля.В этом случае программа запускается следующим образом:
public static void StartAsPlugin() {
Application.EnableVisualStyles();
Form form = new Form();
form.ShowDialog();
}
Когда программа запускается как плагин, индикаторы выполнения и поля со списком не отображаются в том же стиле, что и при нормальном запуске программы,в то время как кнопки, флажки и переключатели в порядке.Есть ли способ форсировать визуальный стиль?Я попробовал с манифестом, но безуспешно!Вот манифест, который я попробовал:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="*"
name="RealApp"
type="win32"
/>
<description>Your application description here.</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>
Я думаю, что манифест встроен правильно, потому что ildasm показывает следующее в разделе манифеста:
.mresource public RealApp.RealApp.exe.manifest
{
// Offset: 0x000004F0 Length: 0x0000029B
}
Спасибо, Стенио