Я много лет боролся с несколькими инструментами в toolstripcontainer. У меня есть текущее приложение .NETv3.5, написанное на VS2008, где расположение инструментальных панелей является случайным. Было сделано много настраиваемого кода, чтобы исправить это, но без везения.Сохранение местоположения пользователя инструментальной панели до сих пор не работает в VS2012
В настоящее время я работаю в VS2012 на приложении .NETv4.5, который также имеет несколько панелей инструментов. Я создал очень маленькое тестовое приложение, которое представляет собой форму с док-станцией toolstripcontainer и 4 инструментальными панелями. Во время разработки я добавил 3 панели инструментов внизу и 1 вправо.
Не добавляя никакого кода и не запуская это приложение, мои инструментальные панели расположены в том же месте, что и во время разработки. Теперь я переупорядочиваю 3 верхние панели инструментов и перезапускаю приложение. Мои изменения порядка не сохраняются, а инструментальные панели снова, как во время разработки.
Теперь добавьте следующие строки кода:
public partial class Toolstrips : Form
{
private string keyName;
public Toolstrips()
{
this.InitializeComponent();
this.keyName = Application.ProductName + this.Name + "xyz";
ToolStripManager.LoadSettings(this, this.keyName);
}
private void Toolstrips_FormClosing(object sender, FormClosingEventArgs e)
{
ToolStripManager.SaveSettings(this, this.keyName);
}
}
и все еще в VS2102 с .NETv4.5 это не работает. Я могу изменить порядок, который я хочу после перезапуска приложения, все панели инструментов будут восстановлены до местоположения проекта.
Я надеялся, что это будет исправлено в VS2012, но, по-видимому, нет. У кого-нибудь есть работа, чтобы заставить это работать?
EDIT: Добавлено содержание User.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="System.Windows.Forms.ToolStripSettings.GUI-prototypeToolstripsxyz.toolStripTable" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
<section name="System.Windows.Forms.ToolStripSettings.GUI-prototypeToolstripsxyz.toolStripPan" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
<section name="System.Windows.Forms.ToolStripSettings.GUI-prototypeToolstripsxyz.toolStripStandard" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
<section name="System.Windows.Forms.ToolStripSettings.GUI-prototypeToolstripsxyz.toolStripZoom" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<userSettings>
<System.Windows.Forms.ToolStripSettings.GUI-prototypeToolstripsxyz.toolStripTable>
<setting name="ItemOrder" serializeAs="String">
<value>toolStripButton4</value>
</setting>
<setting name="IsDefault" serializeAs="String">
<value>False</value>
</setting>
<setting name="Size" serializeAs="String">
<value>29, 42</value>
</setting>
<setting name="ToolStripPanelName" serializeAs="String">
<value>toolStripContainer1.Right</value>
</setting>
<setting name="Visible" serializeAs="String">
<value>True</value>
</setting>
<setting name="Location" serializeAs="String">
<value>0, 336</value>
</setting>
<setting name="Name" serializeAs="String">
<value>toolStripTable</value>
</setting>
</System.Windows.Forms.ToolStripSettings.GUI-prototypeToolstripsxyz.toolStripTable>
<System.Windows.Forms.ToolStripSettings.GUI-prototypeToolstripsxyz.toolStripPan>
<setting name="ItemOrder" serializeAs="String">
<value>toolStripButton3</value>
</setting>
<setting name="IsDefault" serializeAs="String">
<value>False</value>
</setting>
<setting name="Size" serializeAs="String">
<value>40, 31</value>
</setting>
<setting name="ToolStripPanelName" serializeAs="String">
<value>toolStripContainer2.Top</value>
</setting>
<setting name="Visible" serializeAs="String">
<value>False</value>
</setting>
<setting name="Location" serializeAs="String">
<value>288, 0</value>
</setting>
<setting name="Name" serializeAs="String">
<value>toolStripPan</value>
</setting>
</System.Windows.Forms.ToolStripSettings.GUI-prototypeToolstripsxyz.toolStripPan>
<System.Windows.Forms.ToolStripSettings.GUI-prototypeToolstripsxyz.toolStripStandard>
<setting name="ItemOrder" serializeAs="String">
<value>newToolStripButton,openToolStripButton,saveToolStripButton,printToolStripButton,toolStripSeparator,cutToolStripButton,copyToolStripButton,pasteToolStripButton,toolStripSeparator1,helpToolStripButton</value>
</setting>
<setting name="IsDefault" serializeAs="String">
<value>False</value>
</setting>
<setting name="Size" serializeAs="String">
<value>248, 31</value>
</setting>
<setting name="ToolStripPanelName" serializeAs="String">
<value>toolStripContainer2.Top</value>
</setting>
<setting name="Visible" serializeAs="String">
<value>False</value>
</setting>
<setting name="Location" serializeAs="String">
<value>6, 0</value>
</setting>
<setting name="Name" serializeAs="String">
<value>toolStripStandard</value>
</setting>
</System.Windows.Forms.ToolStripSettings.GUI-prototypeToolstripsxyz.toolStripStandard>
<System.Windows.Forms.ToolStripSettings.GUI-prototypeToolstripsxyz.toolStripZoom>
<setting name="ItemOrder" serializeAs="String">
<value>toolStripButton1,toolStripButton2</value>
</setting>
<setting name="IsDefault" serializeAs="String">
<value>False</value>
</setting>
<setting name="Size" serializeAs="String">
<value>29, 73</value>
</setting>
<setting name="ToolStripPanelName" serializeAs="String">
<value>toolStripContainer2.Right</value>
</setting>
<setting name="Visible" serializeAs="String">
<value>False</value>
</setting>
<setting name="Location" serializeAs="String">
<value>0, 71</value>
</setting>
<setting name="Name" serializeAs="String">
<value>toolStripZoom</value>
</setting>
</System.Windows.Forms.ToolStripSettings.GUI-prototypeToolstripsxyz.toolStripZoom>
</userSettings>
</configuration>
EDIT2 Я создал небольшое приложение VS2012, написанный на C#, чтобы проиллюстрировать мою проблему. Вы можете скачать его здесь: https://mapwindow5.svn.codeplex.com/svn/tmp/ToolstripDemo/ToolstripDemo.zip Когда я запустить приложение я вижу:
Когда я переупорядочить 3 верхних toolstrips я получаю это:
Теперь я закрыть приложение и вновь открыть его снова, я получаю начальные местоположения:
Теперь я перехожу ToolStrip, который был пристыкован справа к началу:
Я вновь открыть приложение, и я вижу четвёртой ToolStrip все еще находится на вершине, которая в порядке, но порядок не. Посмотрите на двух последних toolstrips:
Еще одна странная вещь, что я не могу перестыковке мой трансфокатора-ToolStrip вправо еще раз.ToolStrip просто исчезает:
Когда я открываю мою форму в VS2012 в toolstrips перестраиваются, а также:
Я не знаю, почему. Я просто открываю форму.
Я сделал свое тестирование и сделал скриншоты, запустив exe из проводника, а не в режиме отладки VS.
Надеюсь, теперь стало ясно, что я имею в виду и что мне нужно. Любые советы очень ценятся.
Трудно представить себе режим сбоя, это работает нормально. Забыли ли вы дать подсказкам имя? Покажите нам содержимое файла user.config. –
В соответствии с запросом я добавил содержимое файла user.config. Я больше всего говорю, что я этого не понимаю;) Теперь я проверю свой код и убедитесь, что у всех панелей и кнопок есть имя. –
Я сделал еще несколько изменений: я добавил ссылку на свое примерное приложение (исходный код) и добавил скриншоты. –