1. <legend id='3cZ6r'><style id='3cZ6r'><dir id='3cZ6r'><q id='3cZ6r'></q></dir></style></legend>

      <tfoot id='3cZ6r'></tfoot>

        <small id='3cZ6r'></small><noframes id='3cZ6r'>

        <i id='3cZ6r'><tr id='3cZ6r'><dt id='3cZ6r'><q id='3cZ6r'><span id='3cZ6r'><b id='3cZ6r'><form id='3cZ6r'><ins id='3cZ6r'></ins><ul id='3cZ6r'></ul><sub id='3cZ6r'></sub></form><legend id='3cZ6r'></legend><bdo id='3cZ6r'><pre id='3cZ6r'><center id='3cZ6r'></center></pre></bdo></b><th id='3cZ6r'></th></span></q></dt></tr></i><div id='3cZ6r'><tfoot id='3cZ6r'></tfoot><dl id='3cZ6r'><fieldset id='3cZ6r'></fieldset></dl></div>

        • <bdo id='3cZ6r'></bdo><ul id='3cZ6r'></ul>
      1. 使用 DoubleBuffering 和 FormBorderStyle.None 在 Windows10 上重绘问题

        Redraw issue on Windows10 with DoubleBuffering and FormBorderStyle.None(使用 DoubleBuffering 和 FormBorderStyle.None 在 Windows10 上重绘问题)

        <i id='BeVRc'><tr id='BeVRc'><dt id='BeVRc'><q id='BeVRc'><span id='BeVRc'><b id='BeVRc'><form id='BeVRc'><ins id='BeVRc'></ins><ul id='BeVRc'></ul><sub id='BeVRc'></sub></form><legend id='BeVRc'></legend><bdo id='BeVRc'><pre id='BeVRc'><center id='BeVRc'></center></pre></bdo></b><th id='BeVRc'></th></span></q></dt></tr></i><div id='BeVRc'><tfoot id='BeVRc'></tfoot><dl id='BeVRc'><fieldset id='BeVRc'></fieldset></dl></div>
            <bdo id='BeVRc'></bdo><ul id='BeVRc'></ul>

              <tbody id='BeVRc'></tbody>
            • <tfoot id='BeVRc'></tfoot>
              <legend id='BeVRc'><style id='BeVRc'><dir id='BeVRc'><q id='BeVRc'></q></dir></style></legend>
            • <small id='BeVRc'></small><noframes id='BeVRc'>

                1. 本文介绍了使用 DoubleBuffering 和 FormBorderStyle.None 在 Windows10 上重绘问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我有一个 Windows 窗体项目的问题,我只能在 Windows 10 机器上重现它(在 Windows 7 上它确实有效).我认为我可以隔离问题的根源,即,如果我打开双缓冲并将 FormBorderStyle 设置为 None,那么如果我调整表单的大小,例如在事件处理程序中,不重绘背景部分和一些控件.也是如此,有时它会起作用(五次中的一次).

                  I have an issue with a Windows Forms project, which I can reproduce only on Windows 10 machine (on Windows 7 it does work). I think that I could isolate the source of issue, namely, if I switch double buffering on and set FormBorderStyle to None, then if I resize the form e.g. in an event handler, the parts of background and some controls being not redrawn. It is also so, that sometimes it works(one time from five).

                  没有重绘它看起来如此(通常有点不同):

                  Not redrawn it looks so(often a bit different):

                  所以它应该看起来像:

                  要重现该问题,只需在表单上添加几个控件(可能数量也很重要),通过覆盖 CreateParamsFormBorderStyle=None<来打开双缓冲/code> (它可以使用另一种边框样式!).

                  To reproduce the issue, just put a couple of controls to the form(may be amount can be also important), switch double buffering on via overriding of CreateParams, FormBorderStyle=None (with another border style it works!).

                  后面的代码:

                  public partial class Form1 : Form
                  {
                      public Form1()
                      {
                          InitializeComponent();
                      }
                      protected override CreateParams CreateParams
                      {
                          get
                          {
                              CreateParams cp = base.CreateParams;
                              cp.ExStyle |= 0x02000000;  // Turn on WS_EX_COMPOSITED
                              return cp;
                          }
                      }
                  
                      private bool small = true;
                      private void button1_Click(object sender, EventArgs e)
                      {
                          //toggle the form's size
                          Height = Height + 300*(small?-1:1);
                          small = !small;
                      }
                  
                      private void button5_Click(object sender, EventArgs e)
                      {
                          Close();
                      }
                  }
                  

                  问题:
                  Windows 10 中是否是 MS 的已知错误(或者可能是有意摆脱 Windows 窗体;))?
                  有什么想法吗?
                  双缓冲且无边框必须.

                  Question:
                  Is it a known bug from MS(or may be intention, to get rid of windows forms ;) ) in Windows 10?
                  Any ideas?
                  Double buffering and no border must be.

                  更新:我有一个 Win 10 Pro 版本:1703;构建 15063.1155.
                  Update2: 在 Win 10 Pro 版本上测试:1709;构建 16299.492 - 同样的问题.

                  Update: I have a Win 10 Pro Version: 1703; Build 15063.1155.
                  Update2: Test on Win 10 Pro Version: 1709; Build 16299.492 - the same issue.

                  更新 3: 在 Win 10 家庭版上测试:1803 - 好多了(我需要几分钟的测试才能重现它),但问题仍然存在.此测试是在另一台使用另一张显卡的计算机上完成的.

                  Update3: Test on Win 10 Home Version: 1803 - much beter(I needed a couple of minutes of testing to reproduce it), but issue still appears. This test was done on another computer with another graphic card.

                  解决方法:
                  恐怕我必须这样做作为解决方法A:删除Windows窗体中的标题栏并设置FormBorderStyleFixedToolWindow 为例.

                  推荐答案

                  对我来说这看起来像是操作系统中的一个错误,但我已经找到了如何在不放弃 DoubleBufferingDoubleBuffering 的情况下让它工作代码>FormBorderStyle=None.

                  For me it looks like an error in OS, but I have found how to make it work without give up on DoubleBuffering and FormBorderStyle=None.

                  如果窗口样式将被扩展

                  cp.ExStyle |= 0x00080000;   // Turn on WS_EX_LAYERED
                  

                  然后一切都按预期工作.

                  then all works as expected.

                  这篇关于使用 DoubleBuffering 和 FormBorderStyle.None 在 Windows10 上重绘问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                  相关文档推荐

                  C# namespace alias - what#39;s the point?(C# 命名空间别名 - 有什么意义?)
                  Using Xpath With Default Namespace in C#(在 C# 中使用具有默认命名空间的 Xpath)
                  Generating an EDMX from a DB2 Database(从 DB2 数据库生成 EDMX)
                  IBM .NET Data Provider Connection String issue with Library List(库列表的 IBM .NET 数据提供程序连接字符串问题)
                  .NET DB2 OLEDB pre-requisites(.NET DB2 OLEDB 先决条件)
                  Referring to Code in IBM.Data.DB2 makes that Assembly Unavailable to the rest of my Solution(引用 IBM.Data.DB2 中的代码使该程序集对我的解决方案的其余部分不可用)
                2. <i id='6GqWT'><tr id='6GqWT'><dt id='6GqWT'><q id='6GqWT'><span id='6GqWT'><b id='6GqWT'><form id='6GqWT'><ins id='6GqWT'></ins><ul id='6GqWT'></ul><sub id='6GqWT'></sub></form><legend id='6GqWT'></legend><bdo id='6GqWT'><pre id='6GqWT'><center id='6GqWT'></center></pre></bdo></b><th id='6GqWT'></th></span></q></dt></tr></i><div id='6GqWT'><tfoot id='6GqWT'></tfoot><dl id='6GqWT'><fieldset id='6GqWT'></fieldset></dl></div>
                  1. <small id='6GqWT'></small><noframes id='6GqWT'>

                          <bdo id='6GqWT'></bdo><ul id='6GqWT'></ul>
                          <tfoot id='6GqWT'></tfoot>
                        • <legend id='6GqWT'><style id='6GqWT'><dir id='6GqWT'><q id='6GqWT'></q></dir></style></legend>
                              <tbody id='6GqWT'></tbody>