#C0202
沧海茫茫千钟粟,且拾吾昧一微尘
——《沧海拾昧集》@CuPhoenix
【阅前敬告】
沧海拾昧集仅做个人学习笔记之用,所述内容不专业不严谨不成体系
如有问题必是本集记录有谬,切勿深究
目录
一、将窗口绑定到SplitContainer中作为子窗口
- 方法
(1) 将放置SplitContainer的窗口设为允许成为MDI父窗体(IsMdiContainer属性);
(2) 实例化子窗体并绑定父窗体;
(3) 通过Controls.Add方法将子窗体加入Panel或将Panel作为容器;
- 代码(通过一个button实例化子窗体):
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Course_Assignment
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
/* 将 Form1 设为父窗体 */
IsMdiContainer = true;
/* 设置 Panel 的背景颜色*/
splitContainer1.Panel1.BackColor = Color.White;
splitContainer1.Panel2.BackColor = Color.Black;
/* 开启双缓冲(与本例无关) */
SetStyle(ControlStyles.UserPaint, true);
SetStyle(ControlStyles.AllPaintingInWmPaint, true); // 禁止擦除背景
SetStyle(ControlStyles.DoubleBuffer, true); // 双缓冲
}
private void button1_Click(object sender, EventArgs e)
{
/* 实例化子窗体 */
Form2 myForm2 = new Form2();
/* 绑定父窗体 */
myForm2.MdiParent = this;
/* 设置 Panel2 为容器 */
myForm2.Parent = this.splitContainer1.Panel2;
// splitContainer1.Panel2.Controls.Add(myForm2); // 或使用 Add 方法
myForm2.Show();
}
}
}
- 运行效果(部分控件与本例无关)

二、SplitContainer鼠标一直显示拖动样式
- 问题描述
在使用一个 SplitContainer 后,无论鼠标距离分割线多远,总是显示为分割线拖动的样式。

- 解决方法
在属性设置中将 Cursor 的值由 VSplit 修改为 Arrow 即可解决。解决后只有当鼠标悬停在分割线上才会显示拖动样式(VSplit 样式),其他情况下均为正常样式(Arrow 样式)。

敬谢诸君。
京华西山之巅。