我在Microsoft Visual C#2010 Express中构建我的界面,我注意到控件的属性工具栏中没有"set parent"属性?
我想知道为什么会这样,如果有一个干净的方式来启用此功能.或者如果没有,为什么它不可用?
我需要它的一个例子是,当我使用Splitcontainer并且Panel1有10个子面板都使用Dock模式'FIll'时,将新面板添加到Spitcontainer面板1变得非常困难.Visual Studio总是假设我正试图将我的新面板作为已经存在的最前沿面板的孩子.

c# visual-studio-2010 windows-forms-designer visual-studio splitcontainer
通常的做法是拥有一个SplitContainer控件,然后再添加一个SplitContainer,然后添加另一个,另一个......?
看起来应该有一个更好的方法,我的意思是,一旦你达到大约3或4个SplitContainers,你在Designer视图中就会耗尽空间来工作.
我有一个SplitContainer,两个面板都填满了.
当我调整大小时,两个面板均匀缩放,因此分割器在容器中的相对距离相同.
我真的需要阻止这个功能.我该怎么做呢?
我的winform应用程序中有3个拆分容器. splitContainer1, splitContainer2, splitContainer3
splitContainer1是主要的拆分容器.在它的panel1中我放了splitContainer2,在它的panel2中我有splitContainer3
然后我添加了两个按钮来折叠/隐藏splitContainer3面板:每当我点击一个按钮时,它就会折叠,但是当我想要折叠2个面板时,其中一个会自动再次展开可能会出现什么问题?
private void btToggleCI_Click(object sender, EventArgs e)
{
switch (splitContainer3.Panel1Collapsed)
{
case false:
splitContainer3.Panel1Collapsed = true;
btToggleCI.ForeColor = Color.Gray;
break;
case true:
splitContainer3.Panel1Collapsed = false;
btToggleCI.ForeColor = Color.Black;
break;
}
}
private void btToggleTestPlan_Click(object sender, EventArgs e)
{
switch (splitContainer3.Panel2Collapsed)
{
case false:
splitContainer3.Panel2Collapsed = true;
btToggleTestPlan.ForeColor = Color.Gray;
break;
case true:
splitContainer3.Panel2Collapsed = false;
btToggleTestPlan.ForeColor = Color.Black;
break;
}
}
Run Code Online (Sandbox Code Playgroud) 如何在SplitContainer上禁用焦点提示?我问,因为我宁愿自己使用OnPaint绘制它们,以使它看起来更平滑.
我试过这个:
protected override bool ShowFocusCues
{
get
{
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的控制:
public class cSplitContainer : SplitContainer
{
private bool IsDragging;
protected override void OnMouseDown(MouseEventArgs e)
{
base.OnMouseDown(e);
if (!IsSplitterFixed) IsDragging = true;
Invalidate();
}
protected override void OnMouseUp(MouseEventArgs e)
{
base.OnMouseUp(e);
if (IsDragging)
{
IsDragging = false;
IsSplitterFixed = false;
}
}
protected override void OnMouseMove(MouseEventArgs e)
{
base.OnMouseMove(e);
if (IsDragging)
{
IsSplitterFixed = true;
if (e.Button == MouseButtons.Left)
{
if (Orientation == Orientation.Vertical)
{
if (e.X …Run Code Online (Sandbox Code Playgroud) 我正在与团队合作的应用程序中的表单具有datagridview作为主要组件(它应占用大部分大小),但还有其他组件.有一个水平拆分容器来拆分它们,但我想知道如何让顶部面板调整其内容.不幸的是,拆分容器中的面板没有AutoSize属性......
这里有两个图像,显示我们所需要的: 此搜索http://www.mediafire.com/conv/8d141b69c63b0d3ac8aebf9129bb77e25ee4a75086cfa6595c4510041fda1fa66g.jpg 图像2 http://www.mediafire.com/conv/56d959d2a9f99b71af16f7ab3eb5833874e8583f7b15bd1df16aafaa7313a7066g.jpg
如您所见,splitcontainer的顶部面板应根据其内容的大小进行调整.有没有办法实现这个目标?
我的 Winforms 应用程序在数据库中保存并恢复其 GUI 状态。除了拆分容器的 SplitterDistance 之外,一切正常。
该值已从数据库正确加载和设置,但是当我退出应用程序而不接触拆分器时,我希望它保存相同的值。但它保存了初始值-25像素。如果我多次打开和关闭应用程序,分离器距离每次都会减少 25 像素。
它不是一个自定义控件,只是一个普通的旧 .NET SplitContainer。仅以编程方式访问该控件以加载其初始 SplitterDistance 并在退出时保存它,仅此而已。
我该如何解决这个问题?
更新: spl 的FixedPanel属性最初设置为None。尝试将其设置为Panel1和Panel2;在这两种情况下,当我保存它时,SplitterDistance都会增加50 像素。
我有一个水平方向的拆分容器.
我只想在窗体调整大小时为panel2设置固定高度,并让分割器调整面板2的大小
现在我这样做,但我不满意,因为用户注意到面板调整大小
Private Sub Form1_ResizeBegin(ByVal sender As Object, ByVal e As System.EventArgs) _
Handles Me.ResizeBegin
spil = SplitContainer1.Height - SplitContainer1.SplitterDistance
End Sub
Private Sub Form1_ResizeEnd(ByVal sender As Object, ByVal e As System.EventArgs) _
Handles Me.ResizeEnd
SplitContainer1.SplitterDistance = SplitContainer1.Height - spil
End Sub
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我有两个多行文本框在 splitContainer 中分开。当我向左或向右拖动分隔符时,我希望文本框相应地调整大小。我该怎么做呢?我正在使用 Microsoft Visual C# 2008 Express Edition。谢谢。
调用MyPanel.Panel1.Hide(); 或MyPanel.Panel2.Hide(); 只需隐藏面板内的控件......但我想让面板的另一面填满整个空间.
所以,如果我隐藏Panel1,我希望Panel2占用整个空间,我希望分离器消失.那可能吗,如果是的话,怎么样?