泥厩石支柱 2023-10-21 07:40 采纳率: 100%
浏览 11
已结题

C# new fish 求指导一个解题思路

问题如下:做了一个无边框窗体A, A里面有个splitcontainer,这个splitcontainer里面包含一些画的图还有说明,现在要做一个窗体B,把A动态的加进B里,多少个自己可以选择,同时A也要可以实现双击后跟B窗体大小一样,
目前实现了把A加到B里面,但是在B窗体里的A不能双击全屏,而且多个A加到B里的时候只有一个加入的显示A里的图,
各位兄弟,求指导一个思路怎么实现A在B窗体里双击后跟B窗体一样大,还有如何快速有效的把A动态添加到B窗体#(狂汗)

  • 写回答

2条回答 默认 最新

  • AICodeThunder 2023-10-21 08:58
    关注

    1.使用Panel或Splitter控件:在窗体B中,你可以使用Panel或Splitter控件来动态地添加窗体A。这些控件允许你按照需要添加和移除窗体A的实例。
    2.创建窗体A的实例:通过代码动态创建窗体A的实例。你可以使用Form.FromHandle()方法从窗体A的句柄创建一个新的窗体实例。
    3.调整窗体A的大小:在窗体A被添加到窗体B之后,你可以通过代码调整窗体A的大小以适应窗体B。例如,你可以获取窗体B的宽度和高度,然后设置窗体A的宽度和高度为同样的值。
    4.处理双击事件:在窗体B中,你可以监听窗体A的双击事件。当双击窗体A时,你可以获取窗体B的宽度和高度,然后设置窗体A的宽度和高度为同样的值。
    5.多实例处理:如果你想在窗体B中添加多个窗体A的实例,你需要确保每个实例都有自己的空间,并且不会互相干扰。你可以使用Panel或Splitter控件的ControlCollection属性来管理这些实例。
    6.绘图和显示:如果窗体A中包含绘图和说明,你需要确保这些内容在窗体B中也能正确显示。你可能需要重写窗体A的OnPaint事件处理程序,以便在窗体B中正确绘制内容。

    下面是一个简单的示例代码,演示如何动态添加窗体A到窗体B,并处理双击事件:

    public partial class FormB : Form
    {
        public FormB()
        {
            InitializeComponent();
        }
    
        private void FormB_Load(object sender, EventArgs e)
        {
            // 添加FormA到FormB
            Panel panel = new Panel();
            panel.Dock = DockStyle.Fill;
            panel.Click += Panel_Click;
            Controls.Add(panel);
    
            FormA formA = new FormA(); // 创建FormA实例
            formA.MdiParent = this; // 设置MdiParent为FormB
            formA.FormState = FormWindowState.Maximized; // 最大化显示FormA
            panel.Controls.Add(formA); // 将FormA添加到Panel中
        }
    
        private void Panel_Click(object sender, EventArgs e)
        {
            // 处理Panel的点击事件,以处理双击FormA的事件
            Control control = sender as Control;
            FormA formA = control.Tag as FormA; // 获取FormA的实例
            if (formA != null)
            {
                formA.FormState = FormWindowState.Maximized; // 最大化显示FormA
            }
        }
    }
    

    上述是一个简单的示例代码,实际实现可能需要根据你的具体需求进行调整。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月3日
  • 已采纳回答 12月26日
  • 创建了问题 10月21日

悬赏问题

  • ¥100 ensp启动设备蓝屏,代码clock_watchdog_timeout
  • ¥15 Android studio AVD启动不了
  • ¥15 陆空双模式无人机怎么做
  • ¥15 想咨询点问题,与算法转换,负荷预测,数字孪生有关
  • ¥15 C#中的编译平台的区别影响
  • ¥15 软件供应链安全是跟可靠性有关还是跟安全性有关?
  • ¥15 电脑蓝屏logfilessrtsrttrail问题
  • ¥20 关于wordpress建站遇到的问题!(语言-php)(相关搜索:云服务器)
  • ¥15 【求职】怎么找到一个周围人素质都很高不会欺负他人,并且未来月薪能够达到一万以上(技术岗)的工作?希望可以收到写有具体,可靠,已经实践过了的路径的回答?
  • ¥15 Java+vue部署版本反编译