子窗口跨类无法正常显示

6lilu9 2018-04-28 05:00:29
题目有点绕,关键词是“跨类”,请耐心看一下,谢谢。
想达到的效果:是将一个ProBar的窗体加入到本窗体的Pan控件中。

一、如果在本窗体的按钮下直接写如下代码,可以成功。
using PROGRESS;
using System;
using System.Windows.Forms;

namespace QualityCheck
{
public partial class QualityCheckUi : Form
{

public QualityCheckUi()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
frmProgress ProBar = new frmProgress(200, panProgress.Size);
this.panProgress.Controls.Add(ProBar);//将子窗体载入panel
ProBar.Show();
}
}

}


二、如果按照分层设计的思想,将代码放在后台调用,结果就不成功了(没反应),请高手解疑。

using PROGRESS;
using System;
using System.Windows.Forms;

namespace QualityCheck
{
public partial class QualityCheckUi : Form
{

public QualityCheckUi()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
new QualityCheckService().Test();
}

}
}



using PROGRESS;
namespace QualityCheck
{
class QualityCheckService : QualityCheckUi
{
public void Test()
{
frmProgress ProBar = new frmProgress(200, panProgress.Size);
this.panProgress.Controls.Add(ProBar);//将子窗体载入panel
ProBar.Show();
}
}

}



...全文
928 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
纯粹个人爱好 2018-04-29
  • 打赏
  • 举报
回复
两段代码的panProgress.Size不一致,第一段代码中的Size在父窗口中定义,第二段代码中的Size在子窗口中定义,建议调试一下看看。
6lilu9 2018-04-28
  • 打赏
  • 举报
回复
引用 5 楼 sp1234 的回复:
....
谢谢你回复那么多
  • 打赏
  • 举报
回复
这其实是对“父子”的认识出现了混淆。 “子类”是个抽象概念,例如“女人”是“人”的子类。 “子窗口”是个具象概念,就好像任何人的儿子并不是自己的亲爹,儿子绝不可能“就是”爹。
  • 打赏
  • 举报
回复
也许这样的代码是荒唐的,但是能说明问题:
        private void button1_Click(object sender, EventArgs e)
        {
            var f = new QualityCheckService();
            f.Test();
            f.Show();
        }
0 1看天下 2018-04-28
  • 打赏
  • 举报
回复
我就想问问 你这个 this.panProgress是什么 是谁的
  • 打赏
  • 举报
回复
你的
new QualityCheckService()
产生的这个窗口根本没显示,你往里边放任何东西,也跟着显示不出来。
xuzuning 2018-04-28
  • 打赏
  • 举报
回复
只看到定义,没看到调用,不好说

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧