我有一個Windows Forms
應用程序,在我的應用程序加載文件到一個列表框,有時這個可能需要幾秒鐘,所以在這個時候我想顯示「紡車」和我發現這個Gif:http://www.ajaxload.info/ 是否有可能將它添加到我的應用程序,而我的應用程序忙於控制器?顯示「紡車」在我Windows窗體應用程序
回答
是
從一個項目中發現了一些舊代碼。 編輯了一些東西,你應該能夠很容易地工作。
調用它:
GuiCursor.WaitCursor(() => { yourclass.DoSomething(); });
類
internal class GuiCursor
{
private static GuiCursor instance = new GuiCursor();
private GuiCursor() { }
static GuiCursor() { }
internal static void WaitCursor(MethodInvoker oper)
{
if (Form.ActiveForm != null && !Thread.CurrentThread.IsBackground)
{
Form myform = Form.ActiveForm;
myform.Cursor = Cursors.WaitCursor;
try
{
oper();
}
finally
{
myform.Cursor = Cursors.Default;
}
}
else
{
oper();
}
}
internal static void ToggleWaitCursor(Form form, bool wait)
{
if (form != null)
{
if (form.InvokeRequired)
{
form.Invoke(new MethodInvoker(() => { form.Cursor = wait? Cursors.WaitCursor : Cursors.Default; }));
}
else
{
form.Cursor = wait ? Cursors.WaitCursor : Cursors.Default;
}
}
}
internal static void Run(Form form)
{
try
{
Application.Run(form);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
}
如由請求,一個例子。創建一個新的winform項目來測試它。 默認情況下你會得到一個Form1。向它添加一個按鈕,雙擊它,讓你得到一個自動生成的方法。
這種替換Form1類。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
GuiCursor.WaitCursor(() => { DoSomething(); });
}
private void DoSomething()
{
Thread.Sleep(3000);
}
}
internal class GuiCursor
{
private static GuiCursor instance = new GuiCursor();
private GuiCursor() { }
static GuiCursor() { }
internal static void WaitCursor(MethodInvoker oper)
{
if (Form.ActiveForm != null && !Thread.CurrentThread.IsBackground)
{
Form myform = Form.ActiveForm;
myform.Cursor = Cursors.WaitCursor;
try
{
oper();
}
finally
{
myform.Cursor = Cursors.Default;
}
}
else
{
oper();
}
}
internal static void ToggleWaitCursor(Form form, bool wait)
{
if (form != null)
{
if (form.InvokeRequired)
{
form.Invoke(new MethodInvoker(() => { form.Cursor = wait ? Cursors.WaitCursor : Cursors.Default; }));
}
else
{
form.Cursor = wait ? Cursors.WaitCursor : Cursors.Default;
}
}
}
internal static void Run(Form form)
{
try
{
Application.Run(form);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
}
我把它作爲新課程在我的項目和變量isWaitCursor不承認 – user3271698
改變它等待 – Johan
我把它放在我的應用程序繁忙和沒有發生的地方 – user3271698
一個小技巧要做到這一點可能是它使用PictureBox
與圖像。點擊按鈕後,使PictureBox
可見並在點擊操作完成後再次隱藏。
我可以使用上面的鏈接,看看這個圈子紡紗? – user3271698
保存該GIF文件並將其放入您的項目中。將此圖像用於PictureBox。 – danish
- 1. 讓我的應用程序模糊,同時顯示「紡車」
- 2. 在窗體中顯示不同的窗口(Windows窗體應用程序)
- 3. 如何在Windows窗體應用程序中顯示MJPEG流?
- 4. 如何在Windows窗體應用程序中顯示MFC控件?
- 5. 線對象不顯示在Windows窗體應用程序
- 6. Windows窗體應用程序
- 7. 如何在WPF應用程序中顯示窗體窗體
- 8. Windows窗體應用程序顯示SSRS報告
- 9. 顯示WPF和Windows窗體應用程序的區別
- 10. Windows窗體應用程序中的DateTime顯示
- 11. Windows窗體應用程序 - 文本突出顯示
- 12. 創建windows窗體應用程序vs vs快車2015
- 13. 在Windows窗體應用程序
- 14. 顯示在Windows窗體應用程序中的控制檯窗口
- 15. 顯示在WPF Windows窗體
- 16. Windows爲我的應用程序顯示「結束任務窗口」
- 17. 使用C#Windows窗體應用程序
- 18. Windows窗體應用程序使用HTML
- 19. 在C++中打開新窗體Windows窗體應用程序
- 20. 我可以在Windows窗體應用程序中使用XpsDocument類
- 21. VS2010,Windows窗體應用程序
- 22. Windows窗體應用程序性能
- 23. Windows多窗體應用程序設計
- 24. 不兼容Windows窗體應用程序
- 25. Windows窗體應用程序中的Windows.Web.Http?
- 26. Windows窗體應用程序中的WCF
- 27. 部署VB.NET Windows窗體應用程序
- 28. 便攜式Windows窗體應用程序
- 29. Windows窗體應用程序錯誤
- 30. Arduino_Visual_Studio-Windows窗體應用程序
請不要用GIF。讓系統爲你做這個。 –
我不能使用Cursor.Current = Cursors.WaitCursor,只有System.Windows.Forms.DataVisualization.Charting.Cursor – user3271698
您可以使用BackgroundWorker的,如果你想使用一個更新進度/圖像。 – Tan