【winform中的提示框】 使用Help.ShowPopup()做信息的提示框

6 篇文章 0 订阅

做winform开发时,常用MessageBox.Show("Test");做提示框,用于验证信息提示时用诸多不便。
可以试试Help.ShowPopup()做提示框 模仿web中的提示框
效果如图
在这里插入图片描述
先看看方法

//
// 摘要:
//     显示帮助的弹出窗口。
//
// 参数:
//   parent:
//     一个 System.Windows.Forms.Control 标识帮助对话框中的父级。
//
//   caption:
//     要在弹出窗口中显示的消息。
//
//   location:
//     一个值,指定要显示弹出窗口中的,相对于屏幕左上角的水平和垂直坐标。
public static void ShowPopup(Control parent, string caption, Point location);

很简单,一个父Control,一个string信息,一个Point也就是坐标
前面两个就不说了,重点在于坐标的获取,上面location面的注释中我们知道,这个Point是相对屏幕的,所以我们获取parent的相对于容器坐标,
在这里插入图片描述
然后将其转换为屏幕坐标就行了

//上面视图中,TextBox为txt_IP,Button为btn_Connect
//实现上面的效果具体如下

/// <summary>
/// 连接
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Btn_Connect_Click(object sender, EventArgs e)
{
    if (!IPAddress.TryParse(txt_IP.Text.Trim(), out IPAddress iP)) 
    {
        Help.ShowPopup(txt_IP, "请检查IP地址格式", PointToScreen(txt_IP.Location));
        return;
    }

    MessageBox.Show("连接成功");
}

上述得到的提示应该是这样的
在这里插入图片描述
所以这个位置我们要根据控件的Size调整一下
这里我们分成9个位置,如下图
在这里插入图片描述
位置枚举类

/// <summary>
/// 显示位置
/// </summary>
public enum ShowPosition
{
    /// <summary>
    /// 上左
    /// </summary>
    Top_Left,
    /// <summary>
    /// 上中
    /// </summary>
    Top_Mid,
    /// <summary>
    /// 上右
    /// </summary>
    Top_Right,
    /// <summary>
    /// 中左
    /// </summary>
    Mid_Left,
    /// <summary>
    /// 中中
    /// </summary>
    Mid_Mid,
    /// <summary>
    /// 中右
    /// </summary>
    Mid_Right,
    /// <summary>
    /// 底左
    /// </summary>
    Bottom_Left,
    /// <summary>
    /// 底中
    /// </summary>
    Bottom_Mid,
    /// <summary>
    /// 底右
    /// </summary>
    Bottom_Right
}

写一个扩展方法方便使用

/// <summary>
/// 提示框
/// </summary>
/// <param name="form"></param>
/// <param name="hint"></param>
public static void Hint(this Form form, Control control, string hint, ShowPosition position = ShowPosition.Bottom_Right)
{
    Point point;

    switch (position)
    {
        case ShowPosition.Top_Left:
            point = new Point
            {
                X = control.Location.X,
                Y = control.Location.Y
            };
            break;
        case ShowPosition.Top_Mid:
            point = new Point
            {
                X = control.Location.X + control.Size.Width / 2,
                Y = control.Location.Y
            };
            break;
        case ShowPosition.Top_Right:
            point = new Point
            {
                X = control.Location.X + control.Size.Width,
                Y = control.Location.Y
            };
            break;
        case ShowPosition.Mid_Left:
            point = new Point
            {
                X = control.Location.X,
                Y = control.Location.Y + control.Size.Height / 2
            };
            break;
        case ShowPosition.Mid_Mid:
            point = new Point
            {
                X = control.Location.X + control.Size.Width / 2,
                Y = control.Location.Y + control.Size.Height / 2
            };
            break;
        case ShowPosition.Mid_Right:
            point = new Point
            {
                X = control.Location.X + control.Size.Width,
                Y = control.Location.Y + control.Size.Height / 2
            };
            break;
        case ShowPosition.Bottom_Left:
            point = new Point
            {
                X = control.Location.X,
                Y = control.Location.Y + control.Size.Height
            };
            break;
        case ShowPosition.Bottom_Mid:
            point = new Point
            {
                X = control.Location.X + control.Size.Width / 2,
                Y = control.Location.Y + control.Size.Height
            };
            break;
        case ShowPosition.Bottom_Right:
            point = new Point
            {
                X = control.Location.X + control.Size.Width,
                Y = control.Location.Y + control.Size.Height
            };
            break;
        default:
            point = new Point
            {
                X = control.Location.X + control.Size.Width,
                Y = control.Location.Y + control.Size.Height
            };
            break;
    }

    //提示框
    Help.ShowPopup(control, hint, form.PointToScreen(point));
}

使用方法

this.Hint(txt_IP, "请检查IP地址格式", ShowPosition.Mid_Right);

需要注意的是,ShowPopup只能同时显示一个,请考虑使用环境

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: WinForm是一种在Windows操作系统上开发桌面应用程序的技术框架。要实现漂亮的信息提示框,可以按照以下步骤: 1. 首先,创建一个新的WinForm窗体应用程序项目。 2. 在窗体上设计一个漂亮的信息提示框界面。可以使用Label控件添加提示信息,Button控件添加确认按钮等。 3. 调整提示框的大小和位置,使其在屏幕上居显示。 4. 添加事件处理程序,使确认按钮可以关闭提示框。 5. 可以考虑使用透明度、阴影效果、圆角等技术,增加提示框的美观度。可以通过设置透明度属性来调整提示框的透明度,以实现一定的透明效果。 6. 设置提示框的动画效果。可以通过使用Timer控件和逐渐改变提示框位置、大小等属性,实现淡入淡出或者从上至下渐显的动画效果。 7. 根据需要,可以为提示框添加自定义的图标。WinForm提供了PictureBox控件用于显示各种图像,可以选择适合的图标来增强提示框的信息表达。 8. 考虑多语言支持。可以根据用户选择的语言,动态改变提示框上的文字。 9. 最后,将提示框的代码封装成一个独立的类或者控件,以便在其他地方多次使用。 通过以上步骤,我们可以在WinForm应用程序实现一个漂亮的信息提示框,让用户在使用过程得到良好的用户体验。 ### 回答2: WinForm使用Microsoft.NET Framework的一种Windows桌面应用程序开发技术。要创建漂亮的信息提示框,可以通过使用C#编程语言和WinForm的图形界面设计工具来实现。 首先,我们可以通过使用PictureBox来添加一个含有透明背景的图标,例如警告图标或成功图标。然后,可以在提示添加一个Label控件,用于显示信息文本。可以通过设置Label的文本、字体、字体颜色等属性来自定义显示样式。还可以使用Control类的BackColor和ForeColor属性设置提示框的背景颜色和文本颜色。例如,可以使用浅灰色的背景和白色的文本来增加整体的美感。 提示框可以使用Form类创建一个新的窗体。可以通过设置Form的TitleBar为None,BorderStyle为FixedSingle,以及通过移动边框和调整大小来定义提示框的外观。可以使用Control类的Location属性设置提示框的位置,可以将其设置为在屏幕央或相对于其他控件的位置。 为了增加提示框的交互性,可以在提示框上添加一个按钮,例如“确定”或“关闭”。可以使用Button类创建一个按钮,并设置它的文字、位置和样式。对于按钮的点击事件,可以在代码添加适当的逻辑,如关闭提示框、执行其他操作等。 最后,可以使用Control类的显示和隐藏方法来控制提示框的可见性。当需要显示提示框时,可以通过调用提示框的Show方法来显示它。当用户执行某些操作或点击按钮后,可以通过调用提示框的Hide方法来隐藏它。 通过上述步骤,我们可以创建一个漂亮的信息提示框。使用WinForm的图形界面设计工具,我们可以通过调整控件的属性和位置来进一步自定义提示框的外观和交互方式,使其更加符合应用程序的整体风格。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值