`

全局等待提示框

阅读更多

xmal代码(Loading.xaml):

<UserControl x:Class="Longshine.SLLib.CommonXaml.Loading"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    >
    <Grid x:Name="LayoutRoot" Width="Auto" Height="Auto">
        <Grid Background="Black" Opacity="0.2"></Grid>
        <Canvas Width="320" Height="50">
            <Rectangle RadiusX="8" RadiusY="8" Stroke="{x:Null}" Fill="#19000000" Height="49" Width="316" Canvas.Left="6" Canvas.Top="3"/>
            <Rectangle RadiusX="8" RadiusY="8" Stroke="{x:Null}" Fill="#19000000" Height="48" Width="316" Canvas.Left="5" Canvas.Top="3"/>
            <Border Height="50" Width="320" Background="#FFFFFFFF" BorderBrush="#FFACACAC" BorderThickness="1,1,1,1" CornerRadius="8,8,8,8">
                <Rectangle RadiusX="8" RadiusY="8" Stroke="{x:Null}" Margin="1,1,1,1">
                    <Rectangle.Fill>
                        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                            <GradientStop Color="#FFFFFFFF"/>
                            <GradientStop Color="#FFE9E9E9" Offset="1"/>
                        </LinearGradientBrush>
                    </Rectangle.Fill>
                </Rectangle>
            </Border>
        </Canvas>
        <Grid Width="320" Height="50" VerticalAlignment="Center">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="5*" />
                <ColumnDefinition Width="10*" />
                <ColumnDefinition Width="80*" />
                <ColumnDefinition Width="5*" />
            </Grid.ColumnDefinitions>
            <Image Stretch="None" Source="Images/loading.png" Grid.Column="1" Opacity="0.3" />
            <Image x:Name="loadingImage" Stretch="None" Source="Images/loading.png" Grid.Column="1" RenderTransformOrigin="0.5,0.5">
                <Image.RenderTransform>
                    <RotateTransform Angle="0"></RotateTransform>
                </Image.RenderTransform>
            </Image>
            <TextBlock x:Name="titleText" FontFamily="Calibri" FontSize="13" Foreground="#FF000000" HorizontalAlignment="Left" Grid.Column="3"/>
            <TextBlock Text="系统处理:" x:Name="loadingText"
    			FontFamily="Verdana" FontSize="14" VerticalAlignment="Center" HorizontalAlignment="Left" Grid.Column="2"/>
        </Grid>
    </Grid>
    <UserControl.Resources>
        <Storyboard x:Name="storyboard">
            <DoubleAnimation Storyboard.TargetName="loadingImage"  Duration="0:0:0.7" To="360" Storyboard.TargetProperty="(UIElement.RenderTransform).RotateTransform.Angle" RepeatBehavior="Forever"></DoubleAnimation>
            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="loadingText" Storyboard.TargetProperty="Opacity" RepeatBehavior="Forever">
                <SplineDoubleKeyFrame KeyTime="00:00:0.0" Value="0"/>
                <SplineDoubleKeyFrame KeyTime="00:00:0.5" Value="1"/>
                <SplineDoubleKeyFrame KeyTime="00:00:1.0" Value="0"/>
            </DoubleAnimationUsingKeyFrames>
        </Storyboard>
    </UserControl.Resources>
</UserControl>

 CS代码(Loading.xaml.cs):

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

namespace Longshine.SLLib.CommonXaml
{
    public partial class Loading : UserControl
    {
        public string Title
        {
            get { return this.titleText.Text; }
            set { this.titleText.Text = value; }
        }

        public Loading()
        {
            InitializeComponent();
            this.storyboard.Begin();
        }

        public void SetLoadingText(string text)
        {
            this.loadingText.Text = "系统处理: " + text;
        }
    }
}

应用代码(LSWindow.cs):

using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Longshine.SLLib.CommonXaml;
using System.Collections.Generic;
using Longshine.SLLib.InputControls;
using System.Threading;
using System.Windows.Threading;
using Telerik.Windows.Controls;
using ClientUtils;

namespace Longshine.SLLib
{
    public class LSWindow
    {
        private static Loading loading;

        static LSWindow()
        {
            System.Windows.Controls.Control rootPage = Application.Current.RootVisual as System.Windows.Controls.Control;
            Panel panel = VisualTreeHelper.GetChild(rootPage, 0) as Panel;
            int count = VisualTreeHelper.GetChildrenCount(rootPage);
            if (loading == null)
            {
                loading = new Loading();
                loading.Visibility = Visibility.Collapsed;
                panel.Children.Add(loading);
            }

        }

        public static void ShowLoading(string message)
        {
            if (loading != null)
            {
                loading.Dispatcher.BeginInvoke(() =>
                {
                    loading.Visibility = Visibility.Visible;
                    loading.SetLoadingText(message);
                });
            }
        }

        public static void HideLoading()
        {
            if (loading != null)
                loading.Dispatcher.BeginInvoke(() => loading.Visibility = Visibility.Collapsed);
        }


        /// <summary>
        /// 记录大批量信息,提示用户
        /// </summary>
        /// <param name="msg"></param>
        public static void MessagePrompt(List<string> msg)
        {
            var msgPromptForm = new MessagePromptForm();
            msgPromptForm.lbMessage.ItemsSource = msg;
            msgPromptForm.Show();
        }

        /// <summary>
        /// 一般性弹出提示框
        /// </summary>
        /// <param name="msg"></param>
        public static void Alert(object msg)
        {
            RadWindow.Alert(new TextBlock { Text = msg.ToString(), Width = 300, TextWrapping = TextWrapping.Wrap });
        }

        /// <summary>
        /// 捕获异常信息,提示用户,并记录日志
        /// </summary>
        /// <param name="ex">异常</param>
        public static void AlertError(System.Exception ex)
        {
            AlertError(ex, true);
        }
        /// <summary>
        /// 捕获异常信息,提示用户,是否记录日志
        /// </summary>
        /// <param name="ex">异常</param>
        /// <param name="isLog">是否记录日志</param>
        public static void AlertError(System.Exception ex, bool isLog)
        {
            if (ex == null) return;
            RadWindow.Alert(new TextBlock { Text = "出现异常:" + ex.Message + "\n可能原因:" + ex.StackTrace, Width = 300, TextWrapping = TextWrapping.Wrap });
            if(isLog)
                LogFactory.FileLogger.Log("出现异常:" + ex.Message + ", 可能原因:" + ex.StackTrace, LOGLEVEL.FATAL);
        }

    }
}

界面:

 

注明:全局等待提示框代码来自于EasySL

 

  • 大小: 3.8 KB
分享到:
评论

相关推荐

    swift-iOS提示与等待框一行代码解决提示与等待框

    此外,`EYProgressHUD`提供了异步显示和隐藏的功能,可以在后台任务完成后自动关闭提示框,避免了忘记关闭导致的用户体验问题。 总的来说,`EYProgressHUD`是一个强大的工具,可以帮助开发者快速、便捷地处理提示和...

    QT中进度条对话框等待耗时操作

    通过设置`setLabelText()`可以更改对话框中的提示文本,以向用户提供更具体的信息。`setMinimumDuration()`方法可以设置对话框至少显示的时间,避免短时间的操作导致对话框一闪而过。 最后,`QProgressDialog`也...

    vue3 封装一个全局通用弹窗提示组件(利用js调用 类似于element)

    在Vue3中,为了提高代码复用性和用户体验,开发者经常需要封装一些全局的、通用的UI组件,例如弹窗提示。本篇文章将详细介绍如何利用Vue3的特性来封装一个类似于Element UI的全局通用弹窗提示组件,并通过JavaScript...

    Jquery 等待弹出框插件jquery.blockUI(遮罩蒙板)

    在Web开发中,我们经常需要在页面处理异步请求或执行长时间操作时,向用户展示一个等待提示或者加载指示器,以告知用户页面正在处理事务并防止用户在此期间进行其他操作。jQuery BlockUI 插件就是这样一个工具,它能...

    ATMHud信息提示框

    在实际使用中,开发者可以将ATMHud集成到项目的`AppDelegate`中,全局管理提示框的显示,或者在需要的地方直接导入并使用。例如,当网络请求开始时,显示加载提示,请求完成后隐藏提示: ```objc // 显示加载提示 ...

    Ajax全局加载框(Loading效果)的配置

    Ajax全局加载框的配置是提升用户体验的重要手段,通过使用jQuery的`ajaxSetup`方法和第三方库如layer,可以方便地实现在Ajax请求过程中的加载提示。处理并发请求时的策略调整有助于避免加载框的误关闭,确保良好的...

    Afx全局函数及MFC常见数据类型.rar_MFC_全局函数

    3. `AfxMessageBox()`:显示一个对话框,用于向用户显示消息并等待用户响应,常用于简单的错误提示或确认操作。 4. `AfxThrowMemoryException()`:当内存分配失败时抛出一个异常,这是MFC内存管理机制的一部分。 ...

    jquery 加载等待

    3. **全局和局部**:它可以设置为全局加载等待,意味着整个页面在进行Ajax请求时都会显示加载提示。也可以针对特定元素或区域设置局部加载等待,只对选定部分显示加载效果。 4. **异步操作**:在进行Ajax请求时,...

    基于vue+element实现全局loading过程详解

    Vue.js是一个流行的轻量级前端框架,而Element UI则是一个为Vue.js设计的丰富的UI组件库,它提供了诸如按钮、表格、加载提示等组件。 首先,为了实现全局loading,我们需要引入必要的组件。在Vue项目中,这通常包括...

    android三种自定义Loading加载框

    在Android开发中,为了提升用户体验,开发者经常需要创建各种自定义的Loading加载框来提示用户应用正在处理数据或执行操作。本教程将详细介绍三种不同的自定义加载框实现方法,帮助你的应用程序在等待过程中呈现更...

    vue 响应拦截 服务等待 状态码处理

    本文将深入探讨"vue响应拦截"、"服务等待"以及"状态码处理"这三个关键知识点。 首先,"vue响应拦截"是指在Vue应用中设置axios的拦截器,以便在发送请求之前或收到响应之后执行特定的操作。这可以帮助我们统一处理...

    mpvue中使用flyjs全局拦截的实现代码

    这里可以使用fly.js的锁机制,在获取到新的token之前,暂停之前的请求,等待token获取完毕之后再继续执行。 整合上述代码后,我们将fly.js实例挂载到Vue的原型上,这样,项目中的所有Vue组件都可通过`this.$flyio`...

    Gloading,以低耦合方式显示android应用程序的全局加载状态视图.zip

    在Android应用开发中,用户体验是至关重要的,尤其是在数据加载过程中,用户往往需要等待,此时一个良好的加载状态视图可以显著提升用户体验。`Gloading`就是这样一款开源项目,它旨在以低耦合的方式帮助开发者在...

    Bootstrap网页loading加载图标动画特效

    这些动画可能包括旋转、缩放、平移、模糊等视觉效果,以吸引用户的注意力并传达等待信息。 在提供的文件中,`index.html`是主HTML文件,其中包含了实现这些加载动画的HTML结构。HTML元素(如`&lt;div&gt;`)通常会包含...

    Vue全局loading及错误提示的思路与实现

    在实际开发中,全局loading效果与错误提示处理是提升用户体验的重要组成部分。本文将详细探讨如何在Vue项目中实现全局loading以及错误提示功能。 首先,关于全局loading效果的实现,核心思路是在发起网络请求之前...

    jQuery学习笔记(2)--用jquery实现各种模态提示框代码及项目构架

    - `wait`展示了一个等待提示,显示3秒后自动关闭。 - `alert`和`confirm`则分别对应标准的警告和确认对话框,`alert`简单地显示一条消息,`confirm`则需要用户确认操作。 在`customize`案例中,我们可以看到如何...

    自己动手写的javascript前端等待控件

    3. **回调函数**:在完成数据加载后,通过回调函数 `docallback` 来处理操作成功后的逻辑,比如隐藏等待提示,这有助于实现异步编程和模块化设计。 4. **AJAX请求**:使用 `$.ajax` 进行GET请求来获取数据,处理...

    加载框布局LoadingView微信小程序源码.zip

    加载框在用户等待数据加载或处理时显示,提供视觉反馈,提升用户体验。 在微信小程序开发中,开发者通常会遇到需要展示加载状态的情况,如页面数据的异步加载、网络请求、长时间计算等。LoadingView是为了解决这一...

    61个等待中gif动态图片资源

    在实际应用中,这些等待动图可以集成到网页的各个部分,如页面顶部的全局加载提示、内容区的局部加载指示、或者是弹出框的加载状态。通过JavaScript或CSS,开发者可以控制动图的显示和隐藏,与后端数据的加载状态...

    使用jQuery全局事件ajaxStart为特定请求实现提示效果的代码

    这意味着,每当页面上任何Ajax请求处于等待状态,且没有其他的Ajax请求正在执行时,ajaxStart事件就会被触发。这个事件的典型用途是实现一个加载提示,以告诉用户正在发送网络请求。 ### 重写Ajax方法与利用jQuery...

Global site tag (gtag.js) - Google Analytics