窗口CAPTION与任务栏中显示不同的解决方法

在开发中遇到程序窗口与任务栏显示不同CAPTION的挑战,尝试通过设置窗口文本并重画未成功。最终采用创建隐藏窗口在任务栏显示统一CAPTION,隐藏实际窗口的方法解决。在实现过程中,遇到最小化时关闭程序的需求,通过反射技术访问并修改其他程序实例的公共变量。代码中展示了在窗口最小化时如何触发关闭程序的逻辑。
摘要由CSDN通过智能技术生成

     前段时间在做一个小模块的时候,碰到一个问题,程序有两个窗口,一个父窗口,一个子窗口,这两个窗口的CAPTION分别不同,而程序要求在启动时显示在任务栏中的CAPTION始终为同一个CAPTION.开始时想到将两个窗口的TEXT设置为要显示在任务栏中CAPTION的文字,然后运行时用API来重画两个窗口的CAPTION,做的时候碰到了一些比较难处理的问题,比如窗口控制栏的颜色渐变问题,然后就放弃这种做法了,后来想到加一个隐形的窗口,用这个隐形窗口在任务栏中显示CAPTION,两个父子窗口设置为在任务栏不显示.这样就解决问题了.因为有很多画面需要这样做,因此把这个隐形窗口放到一个程序通用的模块中.

     在将窗口放到一个程序通用的模块中的时候又遇到了一个问题,因为窗口没有最大最小画按钮,而在任务管理器中可以强制点击应用程序的最大最小化,项目要求在点击最小化的时候需要关闭程序,所以这个事件应写在隐形窗口的Resize中,然后通过隐形窗口再关闭主程序,在关闭主程序的时候需要访问设置各个程序中的一个允许关闭程序的公有变量标志位,又无法实例化窗口对象,就用了反射来实现.

部分代码如下:

        private void HideFormForProjectCaption_Resize(object sender, EventArgs e)
        {
            if (this.WindowState == FormWindowState.Minimized)
            {
               
                    Object obj = Application.OpenForms[_mainFormClassName];

                   if(obj!=null)

                   {
                         FieldInfo field = obj.GetType().GetField(

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值