gpt4 book ai didi

c# - 保存工具条的用户位置在 VS2012 中仍然不起作用

转载 作者:太空狗 更新时间:2023-10-29 21:58:11 27 4
gpt4 key购买 nike

多年来,我一直在努力处理工具条容器中的多个工具条。我有一个用 VS2008 编写的当前 .NETv3.5 应用程序,其中工具条的位置是随机的。已经编写了很多自定义代码来解决这个问题,但没有任何运气。

目前我正在 VS2012 中开发一个 .NETv4.5 应用程序,该应用程序也有多个工具条。我创建了一个非常小的测试应用程序,它是一个带有停靠工具条容器和 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);
}
}

并且仍然在带有 .NETv4.5 的 VS2102 中这不起作用。重新启动应用程序后,我可以重新排序我想要的所有工具条都恢复到设计时的位置。

我曾希望这会在 VS2012 中得到修复,但显然没有。是否有人可以解决此问题?

编辑:添加内容 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>

编辑2我创建了一个用 C# 编写的小型 VS2012 应用程序来说明我的问题。您可以在这里下载:https://mapwindow5.svn.codeplex.com/svn/tmp/ToolstripDemo/ToolstripDemo.zip当我启动应用程序时,我看到:

Initial load

当我重新排序前 3 个工具条时,我得到了这个:

After reorder

现在我关闭应用程序并再次重新打开它,我得到了初始位置:

After reopen

现在我将停靠在右侧的工具条移动到顶部:

Reorder again

我重新打开应用程序,我看到第 4 个工具条仍在顶部,这没问题,但顺序不对。查看最后两个工具条:

Reopen again

另一件奇怪的事情是我无法再次将缩放工具条重新停靠在右侧。工具条消失了:

enter image description here

当我在 VS2012 中打开表单时,工具条也会重新排列: Design time

我不确定为什么。我只是重新打开表单。

我通过从资源管理器运行 exe 来进行测试并制作屏幕截图,而不是在 VS 的 Debug模式下。

我希望它现在更清楚我的意思和我需要什么。非常感谢任何建议。

最佳答案

我用的是vb.net 2010,所以我用的是vb的语法,希望我的回答对你有帮助:

1) 使用 ToolStripManager,您可以保存和加载设置,而无需为所有工具栏单独指定键。指定表单就足够了 - 将使用表单名称作为键来保存表单的设置。

2) 在 FormLoad 和 FormClosing 事件运行子例程中调用 ToolStripManager.SaveSettings() 和 ToolStripManager.LoadSettings() 时不要以其他方式在运行时以编程方式更改工具栏布局。因此,最安全的做法是首先在 FormClosing 和 FormLoad 子程序中调用这些方法,如下所示:

Private Sub Explorer1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
ToolStripManager.LoadSettings(Me)'Me is the form, for which we save the toolbars settings

'further code in this subroutine

End Sub

Private Sub Explorer1_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
ToolStripManager.SaveSettings(Me)
My.Settings.Save()

'further code in this subroutine
End Sub

关于c# - 保存工具条的用户位置在 VS2012 中仍然不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18869095/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com