【沧海拾昧】C# .Net SplitContainer(分割器)控件的使用笔记

文章介绍了如何在WindowsForms应用程序中将窗体绑定到SplitContainer作为子窗口,包括设置MDI父窗体、添加子窗体以及调整Panel。同时,文章还解决了SplitContainer鼠标始终显示拖动样式的问题,通过修改Cursor属性来改善用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#C0202


沧海茫茫千钟粟,且拾吾昧一微尘

——《沧海拾昧集》@CuPhoenix


【阅前敬告】

沧海拾昧集仅做个人学习笔记之用,所述内容不专业不严谨不成体系

如有问题必是本集记录有谬,切勿深究


目录

一、将窗口绑定到SplitContainer中作为子窗口

二、SplitContainer鼠标一直显示拖动样式


一、将窗口绑定到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鼠标一直显示拖动样式

  • 问题描述

        在使用一个 SplitContainer 后,无论鼠标距离分割线多远,总是显示为分割线拖动的样式。

即使距离分割线很远也会显示为拖动的样式(即 VSplit 样式)
  •  解决方法

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

Cursor 属性:指针移过控件时显示的光标

敬谢诸君。


京华西山之巅。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值