在面板内,显示带有深色背景的弹出消息

问题描述 投票:0回答:1

我的问题与此相关 如何显示深色背景的弹出消息

但主要问题是我想在面板内添加淡入淡出形式和焦点形式。我在很多论坛上问过这个问题,但没有人回答。我正在使用面板打开和关闭表单,但有人建议我创建一个用户控件,但没有人告诉我如何设计该用户控件以及如何使用它。如果这里有人有时间帮助我,请这样做。

我的表单中有一个面板,并且在面板内打开了一个名为 form1 的表单。我想在这个 form1 上添加这个淡入淡出表单,以便 form1 的控件应该部分可见,当发生这种情况时,我想打开一个焦点表单,其中我刚刚共享了链接。我想要的就是这个。

c# .net winforms custom-controls panel
1个回答
0
投票

让我看看我是否遵循。

我的表单中有一个面板


在面板中打开了名为 form1 的表单

public partial class MainForm : Form
{
    .
    .
    .
    Form1 form1 { get; } = new Form1
    {
        StartPosition = FormStartPosition.Manual,
    };
    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);
        form1.Location = panel1.PointToScreen(new Point(panel1.Right - 370, 50));
        form1.Show(this);
    }
}


我想在form1上添加这个淡入淡出表单,这样form1的控件应该部分可见,当这种情况发生时

淡出形态

class FadeForm : Form { const float TARGET_OPACITY = 0.8F; public FadeForm() { BackColor = Color.DarkGray; FormBorderStyle = FormBorderStyle.None; Padding = new Padding(0, 0, 0, 20); var linkLabel = new LinkLabel { Dock = DockStyle.Bottom, Text = "https://www.google.com", TextAlign = ContentAlignment.MiddleCenter, Height = 50, }; linkLabel.LinkClicked += (sender, e) => { MessageBox.Show($"Do something with {linkLabel.Text}"); }; Controls.Add(linkLabel); } public new async void Show(IWin32Window owner) { base.Show(owner); if (owner is Form parent) { Bounds = parent.RectangleToScreen(parent.ClientRectangle); // Animate for (float f = 0; f <= TARGET_OPACITY; f += 0.05F) { Opacity = Math.Pow(f, 2); await Task.Delay(TimeSpan.FromSeconds(0.01)); if (!Visible) break; // If form hides during animation. } } } protected override void OnFormClosing(FormClosingEventArgs e) { base.OnFormClosing(e); e.Cancel = true; Hide(); } }


主窗体

public partial class MainForm : Form { public MainForm() { InitializeComponent(); StartPosition = FormStartPosition.CenterScreen; foreach (var button in panel1.Controls.OfType<Button>()) { button.MouseEnter += (sender, e) => { FadeForm.Hide(); FadeForm.Show(form1); switch (button.Name) { case nameof(button1): FadeForm.BackColor = Color.LightBlue; break; case nameof(button2): FadeForm.BackColor = Color.LightGreen; break; case nameof(button3): FadeForm.BackColor = Color.LightCoral; break; } }; } Disposed += (sender, e) => FadeForm.Dispose(); } Form1 form1 { get; } = new Form1 { StartPosition = FormStartPosition.Manual, }; FadeForm FadeForm { get; } = new FadeForm(); protected override void OnLoad(EventArgs e) { base.OnLoad(e); form1.Location = panel1.PointToScreen(new Point(panel1.Right - 370, 50)); form1.Show(this); } }


我想打开一个焦点表单,其中我刚刚分享了链接

此时我的水晶球对于你下一步想要做什么变得模糊,但希望这能为你提供一个起点。

© www.soinside.com 2019 - 2024. All rights reserved.