【教学】制作TaskDialog
vb2010吧
全部回复
仅看楼主
level 13
百百mp3 楼主
当 Windows Vista 或 Windows 7 的进程中某程序未响应时,会弹出下图窗口:
其实 VB.NET 也可以制作这样的窗口。
2012年04月30日 14点04分 1
level 13
百百mp3 楼主
首先新建一个WinForm工程,然后导入文件 Microsoft.WindowsAPICodePack.dll
选择 [项目(P) - 添加引用(F)...]

2012年04月30日 15点04分 2
level 13
百百mp3 楼主
添加引用后,设置窗体如下图(控件的名称已给出)
2012年04月30日 15点04分 4
level 13
百百mp3 楼主
双击 OpenDialog 按钮,进入按钮的 Click 代码,在最上面插一行代码:
Imports Microsoft.WindowsAPICodePack.Dialogs
在 Public Class 下插入一行代码:
Dim ApiTaskDialog As New TaskDialog '新建一个TaskDialog
在 Private Sub OpenDialog_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OpenDialog.Click 下插入以下代码:
Dim ButOK As New TaskDialogCommandLink '创建一个按钮
Dim ButCancel As New TaskDialogCommandLink
ApiTaskDialog.InstructionText = "我们需要您的意见" '窗体蓝色文本
ApiTaskDialog.Text = "希望你能把意见发给我们" '蓝色字下面的文本
ButOK.Text = "好的,我要立即发送" '按钮的文本(注:必须要有)
ButCancel.Text = "不,谢谢"
ApiTaskDialog.Controls.Add(ButOK) '向 Dialog 添加控件
ApiTaskDialog.Controls.Add(ButCancel)
ApiTaskDialog.Show() '启动 Dialog

2012年04月30日 15点04分 5
level 13
百百mp3 楼主
运行效果:
可是我们点击按钮都没反应,是因为我们还没有给按钮附上事件。
2012年04月30日 15点04分 6
level 13
百百mp3 楼主
测试:
当我们选择第一个按钮时:
当我们选择第二个按钮时:
但在测试期间,如果点击两次 " 打开 Task Dialog " 按钮时,它会出现以下错误:

2012年04月30日 15点04分 9
level 13
百百mp3 楼主
让 Dialog 有状态栏
修改 ApiTaskDialog.FooterText 属性即可
在 Private Sub OpenDialog_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OpenDialog.Click 中(在 ApiTaskDialog.Show() 语句的前面)插入代码:
ApiTaskDialog.FooterText = "ApiTaskDialog"

2012年04月30日 15点04分 12
level 13
百百mp3 楼主
所有代码:
Imports Microsoft.WindowsAPICodePack.Dialogs
Public Class Main
Dim ApiTaskDialog As New TaskDialog
Private Sub OpenDialog_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OpenDialog.Click
Dim ButOK As New TaskDialogCommandLink
Dim ButCancel As New TaskDialogCommandLink
ApiTaskDialog.InstructionText = "我们需要您的意见"
ApiTaskDialog.Text = "希望你能把意见发给我们"
ApiTaskDialog.Caption = "提交意见"
ApiTaskDialog.FooterText = "ApiTaskDialog"
ButOK.Text = "好的,我要立即发送"
ButCancel.Text = "不,谢谢"
AddHandler ButOK.Click, AddressOf ButOK_Click
AddHandler ButCancel.Click, AddressOf ButCancel_Click
ApiTaskDialog.Controls.Add(ButOK)
ApiTaskDialog.Controls.Add(ButCancel)
ApiTaskDialog.Show()
End Sub
Private Sub ButOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
SelText.Text = "您已经选择了: ' 好的,我要立即发送 '"
ApiTaskDialog.Controls.Clear()
ApiTaskDialog.Close()
End Sub
Private Sub ButCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
SelText.Text = "您已经选择了: ' 不,谢谢 '"
ApiTaskDialog.Controls.Clear()
ApiTaskDialog.Close()
End Sub
End Class
完毕
2012年04月30日 15点04分 13
level 13
百百mp3 楼主
[汗]度娘吞了好多...
2012年05月01日 01点05分 14
level 13
百百mp3 楼主
补发2L:
在弹出的窗口中,打开"浏览"选项卡,选择 Microsoft.WindowsAPICodePack.dll (在1L图片里,下载后将后缀名改为 .rar ) 文件

2012年05月01日 01点05分 15
level 13
百百mp3 楼主
补发7L:
我们插入以下代码:
Private Sub ButOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
ApiTaskDialog.Close()
End Sub
Private Sub ButCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
ApiTaskDialog.Close()
End Sub
然后在 Private Sub OpenDialog_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OpenDialog.Click 里添加以下代码(必须在 ApiTaskDialog.Show() 语句的上面):
AddHandler ButOK.Click, AddressOf ButOK_Click
AddHandler ButCancel.Click, AddressOf ButCancel_Click

2012年05月01日 01点05分 16
level 13
百百mp3 楼主
补发8L:
如果关闭 Dialog 后,在 SelText 里显示点击的按钮的文本,那么把 ButOK_Click 和 ButCancel_Click 的代码改为:
Private Sub ButOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
SelText.Text = "您已经选择了: ' 好的,我要立即发送 '"
ApiTaskDialog.Close()
End Sub
Private Sub ButCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
SelText.Text = "您已经选择了: ' 不,谢谢 '"
ApiTaskDialog.Close()
End Sub

2012年05月01日 01点05分 17
level 13
百百mp3 楼主
补发10L:
在 ApiTaskDialog.Close() 上添上 ApiTaskDialog.Controls.Clear() 即可解决重复增加的问题
2012年05月01日 01点05分 18
level 13
百百mp3 楼主
补发11L:
测试时, Dialog 的标题栏总是程序名称
其实可以改的
在 Private Sub OpenDialog_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OpenDialog.Click 中(在 ApiTaskDialog.Show() 语句的前面)插入代码:
ApiTaskDialog.Caption = "提交意见"
运行后:

2012年05月01日 01点05分 19
level 13
百百mp3 楼主
Levenim MT
2012年05月04日 13点05分 22
level 13
就是CommandLink?
2012年05月04日 13点05分 23
level 13
百百mp3 楼主
算是吧
2012年05月04日 15点05分 24
level 13
百百mp3 楼主
算是一半
2012年05月04日 15点05分 25
1