返回首页

{A}{S0}简介
在VB.NET编写了这个库,你可以添加一个"自定义工具栏"功能到您的应用程序。背景
我需要在我的应用程序的自定义工具栏的功能,但我真的找不到任何。NET中实现这个库。所以,我决定写我自己,并分享它来帮助别人。使用代码
添加一个DLL文件的引用。在DLL中,有一类名为CustomizeToolStrip。利用图书馆,你应该让这个类的一个实例。然后,您可以设置三件事情:ToolStrip的 - 你想要的ToolStrip一个自定义功能LanguageStrings - 在对话框中使用的字符串词典DefaultSetting - 一个String,包含的代码,当用户点击"重置"按钮是用来
要显示自定义对话框,使用的ShowDialog()。这是一个函数,它返回一个字符串,它可以保存您的设置。
第二个函数是重载的ToolStrip,如果你有保存的ShowDialog()函数的结果。 ToolStrip的按钮/字符串中的代码分离重装说。实现自定义工具栏功能
如果你只是想添加的功能与基本功能,此代码将做完整的工作。将它添加到一个按钮的处理程序,例如。

Dim t As UserCustomizableToolStrip.CustomizeToolStrip

t.ToolStrip = ToolStrip1

Dim chosenSetting = t.ShowDialog()

然后,你可以保存在My.Settings chosenSetting,例如。加载您的应用程序时,您可以再次重装的ToolStrip(假设你的设置被称为ToolStripSetting):{C}添加DefaultSetting启用复位按钮
如果你想添加一个复位按钮,你显然需要提供一个默认值情况下,复位按钮被点击。这是一个如上所述的代码。添加LanguageStrings使用另一种语言
如果您需要在对话框中改变措辞,您可以设置在LanguageStrings,这是一本字典和其它字符串。例如,荷兰的版本将是:
Dim lang As New Dictionary_

	(Of UserCustomizableToolStrip.CustomizableToolStripLanguageStrings, String)



lang.Add(UserCustomizableToolStrip.CustomizableToolStripLanguageStrings.Add, _

	"Toevoegen ->")



lang.Add(UserCustomizableToolStrip.CustomizableToolStripLanguageStrings._

	AvailableToolBarButtons, "Beschikbare items:")

lang.Add(UserCustomizableToolStrip.CustomizableToolStripLanguageStrings.Cancel, _

	"Annuleren")

lang.Add(UserCustomizableToolStrip.CustomizableToolStripLanguageStrings._

	CurrentToolBatButtons, "Huidige items:")



lang.Add_

    (UserCustomizableToolStrip.CustomizableToolStripLanguageStrings.MoveDown, "Omlaag")

lang.Add(UserCustomizableToolStrip.CustomizableToolStripLanguageStrings.MoveUp, "Omhoog")

lang.Add(UserCustomizableToolStrip.CustomizableToolStripLanguageStrings.OK, "OK")

lang.Add(UserCustomizableToolStrip.CustomizableToolStripLanguageStrings.Remove, _

	"<- Verwijderen")

lang.Add(UserCustomizableToolStrip.CustomizableToolStripLanguageStrings.Reset, _

	"Beginwaarden")

lang.Add(UserCustomizableToolStrip.CustomizableToolStripLanguageStrings.Separator, _

	"Scheidingsteken")

lang.Add(UserCustomizableToolStrip.CustomizableToolStripLanguageStrings.TitleBar, _

	"Werkbalk aanpassen")

lang.Add(UserCustomizableToolStrip.CustomizableToolStripLanguageStrings.WarningText, _

	"Weet u zeker dat u de werkbalk wilt herstellen naar de beginwaarden?")

lang.Add(UserCustomizableToolStrip.CustomizableToolStripLanguageStrings.WarningTitle, _

	"Werkbalk aanpassen")



t.LanguageStrings = lang
更多关于选定的设置代码
代码的ShowDialog函数返回(和你所提供的复位按钮)有一个很简单的停工的:
|Item1|Item2|Item3|... 

每个项目(项目1,... ...)对应于任一的ToolStripItem或等于单词分隔符。该项目的顺序是为了其中的按钮和分隔在ToolStrip的出现。兴趣点
我只有14岁,和我很高兴我写这个代码。如果应用程序中使用这个组件,请让我知道它。我很乐意看到我的组件在行动。错误/债券/等。请不要使用"分隔符"字作为任何ToolStripItems名称未执行 - 没有参考文献拖放:历史21-05-2010改写代码,提高使用的简便性2009年6月2日复位按钮。。标签,而不是使用(你没有指定标签属性了)固定与演示的一些问题2009年2月2日首次发行| pimb2

回答

评论会员:游客 时间:2011/12/28
留言Merci,乙脑chercheUNE解决方案倒personnaliser联合国的ToolStripdepuis3怨妇...
TobiasP
评论会员:游客 时间:2011/12/28
尼斯的工作,这可能是一个非常有用的代码的文章是很好写得太。鉴于你的年龄,你显然不能有一个程序员很长,而且使得它更令人印象深刻。我已经改进了一些建议,希望他们帮助您进一步发展自己的技能:除非你有一个非常具体的原因,指定为阵列的参数和变量是一个坏主意-他们几乎总是可以被替换,而不是一个泛型IList。应该有没有需要处理的分隔符作为一个特殊的情况-ToolStripSeparator类继承自ToolStripItem类别,并应遵守相同的规则。而不是实际删除工具条项的ToolStrip,您可以将Visible属性设置为false不应该显示(只要你不打算之间移动不同的toolstrips工具条项目)的项目。第一点,仍然允许你使用数组,如果你想,所以应该没有需要改变使用方法的代码,但允许更大的灵活性(可以作为一个例子直接作为参数添加一个工具条Item属性的内容)。第二点,应该让你使用任何工具条项的"分隔符"字符串。第三点,应该让你跳过按钮()参数ShowCustomizeToolbarWindow和UpdateToolStripWithString,因为可用按钮的设置总是通过工具条Items集合中指定的按钮。(在ToolStripItemCollection移动项目的位置,可以通过先删除它,然后插入在正确的位置,而不是简单地增加它。)
pimb2
评论会员:游客 时间:2011/12/28
你非常感谢很好的建议。我从来没有了解VB.NET的东西,与PHP中的数组大写字母一开始是非常有用的,但我也有经验丰富的VB.NET一些与他们的困难。我将探讨,明天,谢谢。此外,第三项建议是非常有用的,如果已被删除"按钮()参数为只需要指定的ToolStrip不过,我很害怕,我不明白你的第二个点。我处理它们分开,因为用户可以添加多个ToolStripSeparators。因此,他们是"特殊的"需要另案处理-正常的按钮,你可以不添加多次再次感谢你很好的建议。学校,因为我不能保证,当我将您的建议已实施。我对此表示遗憾
。TobiasP
评论会员:游客 时间:2011/12/28
"VB.NET与大写字母开始的事情,我"是接口。基本上,他们指定什么可以做的事情正是事情的排序,而的。数组,列表和许多其他类型的集合,让你,例如,列举其中的内容,即使他们是不同的类型,他们都还可以作为一种方法,需要一个作为参数的IEnumerable的参数使用。这使得使用更加灵活的接口,他们应该尽可能地使用。至于我的第二点是:程序员可以添加多个ToolStripSeparators,但也多ToolStripButtons或任何其他类继承的ToolStripItem(有7个班,从VisualStudio支持的ToolStripItem继承,如果我没有记错)的倍数。通常看起来不同的按钮不同,不同的分隔符通常看起来是一样的,但从来没有少他们都是不同的对象。如果使用VisualStudio设置ToolStrip的内容,ToolStrip的所有项目默认情况下,唯一的名称,你应该能够取代如这部分代码(UpdateToolStripWithString)codeprespanclass="code-keyword"For/spanspanclass="code-keyword"Each/spanspButtonspanclass="code-keyword"In/spansplittedstringtoloadspanclass="code-keyword"If/spanspButton=spanclass="code-string""/spanspanclass="code-string"Separator"/spanspanclass="code-keyword"Then/spanspanclass="code-keyword"Dim/spansep=spanclass="code-keyword"New/spanToolStripSeparatorsep.Name=spanclass="code-string""/spanspanclass="code-string"Separator"/spanToolStrip.Items.Add(sep)spanclass="code-keyword"Else/spanspanclass="code-keyword"For/spanspanclass="code-keyword"Each/spanAButtonspanclass="code-keyword"As/spanToolStripItemspanclass="code-keyword"In/spanButtonsspanclass="code-keyword"If/spanAButton.Name=spButtonspanclass="code-keyword"Then/spanToolStrip.Items.Add(AButton)spanclass="code-keyword"End/spanspanclass="code-keyword"If/spanspanclass="code-keyword"Next/spanspanclass="code-keyword"End/spanspanclass="code-keyword"If/spanspanclass="code-keyword"Next/span/pre/code与短,更快,更容易出错的代码codepreForEachspItemInsplittedstringtoloadForEachAItemAsToolStripItemInButtonsIfAItem.Name=spItemThenToolStrip.Items.Add(AItem)ExitForEndIfNextNext/pre/code(尽管它有稍微改变,如果你正如我在我的第三点建议,并使用LINQ的代码大概可以缩短甚至更多)按钮和分隔也许是最常见的东西放置在一个ToolStrip,但不是唯一的东西可以放在那里,所以一些变量名使用(如按钮),是有点误导。标签,文本框和下拉框,可以放置在一个ToolStrip其他事情的例子,但就像按钮和分隔他们都继承自ToolStripItem的,所以如果你写的代码为ToolStripItem的作品,它应该为所有的子类以及,不过,你都做得很好,在一个有用的类
!pimb2
评论会员:游客 时间:2011/12/28
非常感谢您详细解释不过,我仍然有一个问题,我很害怕。标签,文本框和其他控件已经可以被放置在ToolStrip上与我的组件(例如,见演示)通常情况下,分离器仅用于显示分隔符。所有其他种类的控制事件和特定的属性,因此只使用一次,按钮()参数。与您的代码,分隔符也需要在按钮()的参数。作为一种特定的分隔符(像ToolStripSeparator1),这是不是很实际的行为本身作为一个按钮或标签,如果你这样做。这是不是非常方便,添加起来也比较复杂。作为分隔符仅用于显示他们没有特定的属性和事件完全没有,我已经处理它们分开。要削减长话短说,我怕你建议的代码:对于每一个splittedstringtoloadspItem对于每个作为ToolStripItem的按钮AItem 如果AItem.Name=spItem然后 ToolStrip.Items.Add(AItem) 退出对于 最终如果下一步 下一步作为分隔符需要被放置在按钮()与此代码的参数不起作用。这不是一个非常好的主意,因为它们只能添加一次,然后,像按钮或标签。请纠正我,如果我错了imgsrc=http://www.orcode.com/upimg/2011_12_28_18_20_20_1.gif
。谢恩的故事
评论会员:游客 时间:2011/12/28
保持良好的工作!我也尝试使用的标签。名称,使其说"新""打开"等列表,而不是ToolStrip的....{BR}这是一个小的东西来解决。祝福和继续写!巴蒂尔
pimb2
评论会员:游客 时间:2011/12/28
谢谢我已经设置的项目在其文本值对话框的文本,但我的最后一个版本形象,我没有设置Text属性,所以喜欢ToolStripButton1的东西被显示。感谢您的建议,虽然
。pimb2
评论会员:游客 时间:2011/12/28
我有固定的组件的一些问题,但与学校,我真的是太忙碌,所以我不能更新今天。我希望我明天或将更新日(星期六)
。Ant2100
评论会员:游客 时间:2011/12/28
嗨,首先我想说这么精彩的文章和DLL祝贺。我觉得你做了一项伟大的工作,在此功能。有一个小问题,我想强调虽然的。当我点击我的工具栏上的自定义按钮,打开自定义窗口正常,我可以很容易地改变按钮的顺序等..然而,当我点击确定关闭窗口,工具栏上的自定义按钮已经消失了!其他按钮已经重新排序/删除/添加正确,但自定义按钮似乎并不存在。我不知道如果其他人有同样的问题,因为这可能只是我的机器玩起来。不过,再次感谢这样一个美好的控制和文章。目前我13,我需要一个这样的控制在转换项目,该项目的工作。我也许可以找到这个错误的解决方法,并会让你知道如果我这样做。,安东尼
。pimb2
评论会员:游客 时间:2011/12/28
。感谢您的反应和报告bug对不起,我不完全理解你。你在哪里放置自定义"按钮?它是一个在自己的项目或在本文中的演示错误?如果在自己的项目,我将感激如果您上传在互联网上的某个地方,给我给它的链接,所以我可以探索任何错误代码。不过,我有相当一些从学校的功课要做,此刻也许我不会管理今天回应。在此先感谢
。Ant2100
评论会员:游客 时间:2011/12/28
您好,感谢您的快速答复。我有固定的问题:我放在工具栏上的本身的自定义"按钮,但我现在意识到,这不是一个很好的主意,"自定义"按钮,应独立于它是自定义的工具栏。所以,我,而不是放在反对ToolStrip的MenuStrip中"自定义"按钮,这个固定的问题。,安东尼
会员4513985
评论会员:游客 时间:2011/12/28
你为什么不使用ToolstripItem.Name的ToolstripItem.Tag,所以我们不指定这些
?pimb2
评论会员:游客 时间:2011/12/28
谢谢你的建议。我不知道,在第一个属性。我已经改变了,但由于学校,我会上传上周六,明天或者。对不起
会员4513985
评论会员:游客 时间:2011/12/28
张贴答复这么快{S2}我以为你不知道它的感谢,因为我相信你已经用它,否则。很高兴看到其他荷兰人民的方式,imgsrc=http://www.orcode.com/upimg/2011_12_28_18_20_20_1.gif
pimb2
评论会员:游客 时间:2011/12/28
我很很抱歉,如果我不理解你,但你的意思是你还荷兰?imgsrc=http://www.orcode.com/upimg/2011_12_28_18_20_20_1.gif
会员4513985
评论会员:游客 时间:2011/12/28
是的,我也荷兰{五}
pimb2
评论会员:游客 时间:2011/12/28
首先,感谢您的积极反应在我的项目,我刚才提到一个错误。有没有留下任何物品在ListView当前按钮时,你可以不拖拖放到该ListView中的任何按钮。我已经纠正了,但我目前没有多少空闲时间。我会尽量更新我的文章和源代码的明天
。rspercy58
评论会员:游客 时间:2011/12/28
你从我这里得到5。rspercy1=186440....根据不同的品种
保罗Selormey
评论会员:游客 时间:2011/12/28
...和文章写得清清楚楚。坚持做下去。最好的问候,保罗。耶稣基督是爱!请告诉别人。
pimb2
评论会员:游客 时间:2011/12/28
14岁?去!这是一个不错的组成部分。JMwww.menendezpoo.com