private void btnDel_Click(object sender, EventArgs e)
        {
            if (listView1.SelectedIndices.Count > 0)
            {
                listView1.Items[listView1.SelectedIndices[0]].SubItems[1].Text = "";
                listView1.Items[listView1.SelectedIndices[0]].BackColor = Color.White;
            }
        }这是我在wince上实现的一个删除的功能 ,但是由于点击按钮后 等待时间太久 我现在想这样做 我建了一个新窗体 上面做了一个等待效果 请稍候... 我想利用showdialog 来实现 当这个删除操作未完成时显示这个新窗体 完成后 这个窗体隐藏或者关闭 如何实现?需要多线程吗?

解决方案 »

  1.   

    使用一个窗体,窗体上有一个“删除(btnDelete)”“取消(btnCancel)”,同时放置一个picturebox(picWait),为picWait选择一张等待的gif动画。//在窗体的加载事件中写
    private void FrmClient_Load(object sender, EventArgs e)
            {
                this.picWait.visible=false;
            }
    private void btnDelete_Click(object sender, EventArgs e)
    {
        this.btnDelete.visible=fasle;
        this.btnCancel.visible=false;
        this.picWait.visible=true;
        //执行删除操作
         //
        //执行完成后
        this.btnDelete.visible=true;
        this.btnCancel.visible=true;
        this.picWait.visible=false;
      }
    两个窗体的类似,需要用到单态设计模式或观察者模式,也可不用
      

  2.   


    BOSS不让用图片 只能用新建的窗体 showdialog
      

  3.   

    两个窗体:一个是主窗体frmDelete,一个是提示窗体frmTips
    在删除窗体中(主窗体),一个删除按钮btnDeleteprivate void btnDelete_Click(object sender, EventArgs e)
            {
                FrmTips frmTips = FrmTips.GetInstance();
                frmTips.ShowDialog();
            }提示窗体中,放置一个计时器,间隔设置为2000(我这里只是模拟删除用的时间,你用在你的项目中的时候就不用计时器了),加一个label“正在删除 请稍后!”using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;namespace 提示窗体
    {
        public partial class FrmTips : Form
        {
            private static FrmTips frmTips = null;
            private FrmTips()
            {
                InitializeComponent();
            }
            /// <summary>
            /// 单态
            /// </summary>
            /// <returns></returns>
            public static FrmTips GetInstance()
            {
                object obj = new object();
                if (frmTips == null)
                {
                    lock (obj)
                    {
                        if (frmTips == null)
                        {
                            frmTips = new FrmTips();
                        }
                    }
                }
                return frmTips;
            }
            /// <summary>
            /// 模拟开始删除数据
            /// </summary>
            public void BeginDelete()
            {
                this.timer1.Enabled = true;
            }
            /// <summary>
            /// 通过计时器来模拟数据删除成功
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void timer1_Tick(object sender, EventArgs e)
            {
                timer1.Enabled = false;
                this.Close();
            }
            /// <summary>
            /// 窗体加载时便开始执行删除数据的方法
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void FrmTips_Load(object sender, EventArgs e)
            {
                BeginDelete();
            }
        }
    }
    提示窗体中用不用单态都无所谓,项目源文件我放到网站上。
    http://u.115.com/file/t17417388e
      

  4.   

    代码中有个错误,单态中,obj应该定义为private static ojb=new object();写在类内,作为类静态成员。