【问题标题】:C# WinForm - How To Make Semi Transparent Loading Screen?C# WinForm - 如何制作半透明的加载屏幕?
【发布时间】:2022-10-24 04:58:17
【问题描述】:

首先,我想非常简要地谈谈应用程序。我的应用程序的主窗体里面有一个子窗体,这个子窗体还包含一个datagridview。您可以在下图中看到我正在谈论的结构。

Application Structure

我有一个非常秘密和神奇的功能。此功能使用热键,功能的工作时间有点长,所以我想制作一个待机屏幕。当我按下热键时,我希望 datagridview 变暗一点,并且消息“请稍候”出现在子窗体的中间。如果你不明白,请看下面的图片。

It's what I want it to be

为此,我在 datagridview 上放置了一个面板并将其设置为

panel.BackColor = Color.FromArgb(50, Color.Black);
panel.Visible = false;

myFunction() 也这样做。

private void myFunction()
{
  panel.Visible = true;
  // Top secret codes {...}
  panelVisible = false;
}

但是这种方法没有奏效。面板出现,但它像这样删除它后面的gridview。

----- :'( -----

我搜索了很多,但无法解决问题。有没有人有更好的方法或解决方案建议?

【问题讨论】:

  • 屏幕截图看起来不像,因为它有任何透明度。它只是似乎被禁用,因此变灰。如果你真的想要一个部分透明的覆盖表单,你可以使用Opacity 属性。或者,请参阅this 回答,了解如何在 WinForms 中创建 Windows 10 模糊透明效果。
  • 如果你想使用透明/半透明的面板,你必须创建一个自定义控件,来设置一些特定的样式。背景颜色不够。请参阅示例 here -- 或类似的内容:Translucent circular Control with text

标签: c# winforms


【解决方案1】:

您可以拥有一个在操作开始时调用的函数。此函数显示标签“请稍候”并用所需颜色填充 gridview 列:

private void standbyScreen()
{
        foreach (DataGridViewColumn col in dataGridView1.Columns)
        {
            col.DefaultCellStyle.BackColor = Color.FromArgb(50, 50, 50); 
            col.DefaultCellStyle.ForeColor = Color.FromArgb(80,80,80);          
        }
        pleaseWaitLbl.Show();
}

此代码为 DataGridView 创建一个待机屏幕:

以及结束将待机屏幕变为正常的操作的功能:

private void normalScreen()
{
        foreach (DataGridViewColumn col in dataGridView1.Columns)
        {
            col.DefaultCellStyle.BackColor = Color.Gray; 
            col.DefaultCellStyle.ForeColor = Color.White;              
        }
        pleaseWaitLbl.Hide();
}

这只是一个示例,您可以为待机屏幕选择更好的颜色。 我希望这有帮助

【讨论】:

  • pleaseWaitLbl.Show(); 和 pleaseWaitLbl.Hide(); 应该在循环之外
猜你喜欢
  • 2013-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多