关于C#窗体的ToolStripContainer侧板扩展
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于C#窗体的ToolStripContainer侧板扩展相关的知识,希望对你有一定的参考价值。
我用的是VS2012,我知道在在VS2012上新建一个窗体程序并在工具箱中拉动ToolStripContainer到窗体就会出现如下图效果:
我想知道是怎么出现我用红色矩形标志的那些拉伸图标,因为我试了一下new了一个ToolStripContainer类却发现并没有如上图的效果?请前辈指教,不懂勿扰。
直接上图了.
如果选不中整个控件的话.请右键控件,然后选择ToolStripContainer就和我这个一样了.
之后点右上角箭头.
这个可以修改是否显示某个方向.
追问我知道效果,我只是想要那个带有小箭头图标的控件
参考技术A这个小箭头图标只在设计模式下可见,运行后就没有了,起到的作用是指定顶、底、左、右扩展区域是否可见。
如果想用代码指定某区域是否可见,可以用:
toolStripContainer1.BottomToolStripPanelVisible = true;toolStripContainer1.TopToolStripPanelVisible = true;
toolStripContainer1.LeftToolStripPanelVisible = false;
toolStripContainer1.RightToolStripPanelVisible = false;追问
难道类库里就没有带有这小箭头图标的控件?那怎么找到这种小箭头图标,你有没有?谢谢
追答自定义控件,自绘。
追问有没有像那样的小箭头图标,能不能传给我?谢谢
本回答被提问者采纳 参考技术B 无论你new了什么新的控件,设定好location和size这些信息之后,后面都要用this.Controls.Add(新控件名)来添加到窗体上去。追问已经用Controls.Add添加了,可就是没有那些拉缩图标
太小了,你没指定size吧。
追问呃,不是的,这么说吧,什么控件会出现那种缩放图标?
呃,不是的,这么说吧,什么控件会出现那种缩放图标?
在 C# 中为 Windows 窗体创建向导
【中文标题】在 C# 中为 Windows 窗体创建向导【英文标题】:Creating Wizards for Windows Forms in C# 【发布时间】:2011-01-21 09:14:54 【问题描述】:我是在 C# .Net 中为 Windows 窗体应用程序创建向导的新手。所以我对创建向导一无所知。请给我一些关于创建多个向导的想法。
问候,拉维
【问题讨论】:
【参考方案1】:有很多方法可以做到这一点。为每个向导步骤创建一个表单是可能的,但非常尴尬。当用户更改步骤时,丑陋,大量闪烁。使 UserControl 可以工作的每个步骤,您只需将它们切换进和切换出表单的 Controls 集合。或者为每个步骤设置其中一个 Visible = true。但是,UC 设计往往会变得复杂,您必须为每个 UI 项添加公共属性。
简单而 RAD 的方法是使用 TabControl。在设计器中工作得很好,因为它允许您在设计时切换选项卡并在每个选项卡上放置控件。切换步骤很简单,只需更改 SelectedIndex 属性。唯一重要的是在运行时隐藏选项卡。通过处理 Windows 消息仍然很容易做到。在表单中添加一个新类并粘贴如下所示的代码。编译。将新控件从工具箱顶部拖放到表单上。
using System;
using System.Windows.Forms;
class WizardPages : TabControl
protected override void WndProc(ref Message m)
// Hide tabs by trapping the TCM_ADJUSTRECT message
if (m.Msg == 0x1328 && !DesignMode) m.Result = (IntPtr)1;
else base.WndProc(ref m);
【讨论】:
+51: 所以现在你可以使用标签控件,隐藏标签...并在标签页之间切换标签索引...???我将使用它...比管理重叠面板要好得多。 @Hans 很好的回答汉斯!我只是 courius :这是否完全隐藏了选项卡,因此用户无法单击或通过 hittink TAB 键或其他方式激活它们? @Sean87 按下 CTRL+TAB 实际上会跨标签页移动 @tab的souloution只是将TabStop
设置为false
@Hans 我尝试了这个解决方案,虽然它在大多数情况下都很好用。问题是它不会在运行时删除 tabcontrol 边框和框架。有可能吗?【参考方案2】:
class WizardPages : TabControl
protected override void WndProc(ref Message m)
// Hide tabs by trapping the TCM_ADJUSTRECT message
if (m.Msg == 0x1328 && !DesignMode) m.Result = (IntPtr)1;
else base.WndProc(ref m);
protected override void OnKeyDown(KeyEventArgs ke)
// Block Ctrl+Tab and Ctrl+Shift+Tab hotkeys
if (ke.Control && ke.KeyCode == Keys.Tab)
return;
base.OnKeyDown(ke);
【讨论】:
其他键呢? PageUp 和 PageDown?还是左右方向键?您无法添加它们,因为您将无法在该控件的子文本框内移动。 如果你处理Ctrl
+Tab
和 Ctrl
+Shift
+Tab
不要忘记它们的等价物 Ctrl
+PgUp
和 Ctrl
+@987645 @。后者在Ctrl
+Tab
和Ctrl
+Shift
+Tab
被内部控制采用的许多情况下更为占主导地位,例如多行输入框。
@Misiu 上面限制的键在子控件中仍然可以正常工作(我刚刚测试过)
@miroxlav - 我没有检查,我写了简单的控件,它没有扩展 TabControl。我用过这篇文章:codeproject.com/Articles/18674/…【参考方案3】:
您需要创建自己的来满足自己的喜好。提示您创建一个名为“frmWizard”的基本表单,然后您的所有向导窗口都将从它继承。您应该将通用对象或向导对象放在基类上,并根据需要在派生类上修改 \ 覆盖它们。
【讨论】:
结合基本表单(此处建议)+自定义选项卡控件(在其他答案中描述)很有用。为向导创建基础非常有用,尤其是当应用程序具有多个向导时。它有助于避免复制粘贴编码的恐惧。 我通常在基类中实现的有用方法有..OnPageEntered
、OnPageExited
、AllowNext
、AllowBack
等以上是关于关于C#窗体的ToolStripContainer侧板扩展的主要内容,如果未能解决你的问题,请参考以下文章
C#菜单和工具栏之contextMenuStripmenuStripstatusStriptoolStrip和toolStripContainer
C# toolStripContainer控件 和 DockPanel控件 一起用