如何让MessageBox.Show()提示框不显示默认的确定按钮

叹息LOVE 2014-10-29 11:24:26
提示框中显示提示的内容,可设置图标样式,点击右上角的叉叉可关闭提示框,不要下面的任何按钮。
如下图:

求大神指教
...全文
2339 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
我现在在路上 2014-11-08
  • 打赏
  • 举报
回复
引用 26 楼 layershow 的回复:
楼主:我要加薪 老板:你确定要加薪?(此处没有确定按钮) 老板这需求很合理啊
Bunnykun 2014-11-08
  • 打赏
  • 举报
回复
你可以自己做嘛, 呵呵呵
layershow 2014-11-04
  • 打赏
  • 举报
回复
楼主:我要加薪 老板:你确定要加薪?(此处没有确定按钮) 老板这需求很合理啊
T_MonkiJin 2014-11-04
  • 打赏
  • 举报
回复
就算警告也有确定按钮,话说你这个直接自己写个窗体不得了
gengchenhui 2014-11-04
  • 打赏
  • 举报
回复
这种设计真是奇葩。
  • 打赏
  • 举报
回复
老板肯定随口说了一句“提示窗口里的按钮真难看”,其实老板想的提示窗是类似“您的信息已经提交!”这种提示窗(而不是让用户“二选一”的提示窗),而程序员就吓得不知道怎么办好了。 这类问题,除了程序员知道可以自己抄别人代码而编写个 Form 来作为提示窗,也确实还要提高程序员的设计素质。
路过的菜鸟 2014-11-01
  • 打赏
  • 举报
回复
自己做一个呗
失落的神庙 2014-11-01
  • 打赏
  • 举报
回复
写个MessageBox这样的类
threenewbee 2014-10-31
  • 打赏
  • 举报
回复
可以啊

FindWindow找到MessageBox的Handle,然后找Button的Handle,再ShowWindow把它隐藏掉,用SetWindowRect改变窗口大小。

逼格高一些的写一个全局Hook,拦截MessageBox的WM_INITDIALOG,把上面的操作放在里面。

不过实现这种没有意义的sb需求,强烈要求狠狠敲老板一笔,你可以和老板说,这个需要double的薪水+闭关研发半个月,老板说OK没问题那就没话说了。
幻_影 2014-10-31
  • 打赏
  • 举报
回复
楼上有一位说的太对了:永远不要做反人类习惯和反人类操作便捷性的设计。 确实没想出来为什么要去年那个按钮。
卧_槽 2014-10-31
  • 打赏
  • 举报
回复
引用 18 楼 caozhy 的回复:
可以啊 FindWindow找到MessageBox的Handle,然后找Button的Handle,再ShowWindow把它隐藏掉,用SetWindowRect改变窗口大小。 逼格高一些的写一个全局Hook,拦截MessageBox的WM_INITDIALOG,把上面的操作放在里面。 不过实现这种没有意义的sb需求,强烈要求狠狠敲老板一笔,你可以和老板说,这个需要double的薪水+闭关研发半个月,老板说OK没问题那就没话说了。
我不大相信老板知道有MessageBox这回事。 他肯定只说了,去掉那个“确定”按钮
卧_槽 2014-10-30
  • 打赏
  • 举报
回复
引用 12 楼 phommy 的回复:
[quote=引用 11 楼 Z65443344 的回复:] [quote=引用 8 楼 phommy 的回复:] 关注下 初看以为是个很简单的需求,只要另起线程检查Application.OpenForms,弹出对话框后用Controls属性检索Button隐藏掉即可,但一试发现不知道为什么弹出的对话框并没有把自己加入OpenForms,可能与调用了user32.dll里的MessageBox有关
MessageBox是封装好的窗体,只能以模态窗体的形式弹出,跟普通Form不是一回事 而且即使它将自己加入了OpenForms,你确定能获取到里面的按钮吗?[/quote] 了解了。。 如果它是Form的话,通过Controls理应找的到其中的Button,但可惜不是就没办法了 不过大的思路应该没问题,弹出mbox前另起线程,把窗体中的button隐藏掉,但既然不是它form想来只能通过系统api来获取窗体,再SendMessage来隐藏button(应该也是个window)。具体的需要查手册我就不查了,思路供楼主参考。[/quote] messagebox并不是form,至少他不是继承自form。至于用windows api来操作,那叫做脱了裤子放屁,或者叫做南辕北辙更合适。
zzyhost 2014-10-30
  • 打赏
  • 举报
回复
Form吧,懒得添加就直接实例化一个
phommy 2014-10-30
  • 打赏
  • 举报
回复
引用 11 楼 Z65443344 的回复:
[quote=引用 8 楼 phommy 的回复:] 关注下 初看以为是个很简单的需求,只要另起线程检查Application.OpenForms,弹出对话框后用Controls属性检索Button隐藏掉即可,但一试发现不知道为什么弹出的对话框并没有把自己加入OpenForms,可能与调用了user32.dll里的MessageBox有关
MessageBox是封装好的窗体,只能以模态窗体的形式弹出,跟普通Form不是一回事 而且即使它将自己加入了OpenForms,你确定能获取到里面的按钮吗?[/quote] 了解了。。 如果它是Form的话,通过Controls理应找的到其中的Button,但可惜不是就没办法了 不过大的思路应该没问题,弹出mbox前另起线程,把窗体中的button隐藏掉,但既然不是它form想来只能通过系统api来获取窗体,再SendMessage来隐藏button(应该也是个window)。具体的需要查手册我就不查了,思路供楼主参考。
於黾 2014-10-30
  • 打赏
  • 举报
回复
引用 8 楼 phommy 的回复:
关注下 初看以为是个很简单的需求,只要另起线程检查Application.OpenForms,弹出对话框后用Controls属性检索Button隐藏掉即可,但一试发现不知道为什么弹出的对话框并没有把自己加入OpenForms,可能与调用了user32.dll里的MessageBox有关
MessageBox是封装好的窗体,只能以模态窗体的形式弹出,跟普通Form不是一回事 而且即使它将自己加入了OpenForms,你确定能获取到里面的按钮吗?
phommy 2014-10-30
  • 打赏
  • 举报
回复
引用 9 楼 youzelin 的回复:
[quote=引用 8 楼 phommy 的回复:] 关注下 初看以为是个很简单的需求,只要另起线程检查Application.OpenForms,弹出对话框后用Controls属性检索Button隐藏掉即可,但一试发现不知道为什么弹出的对话框并没有把自己加入OpenForms,可能与调用了user32.dll里的MessageBox有关
不知道你在说什么,如果是不相关的问题,请另起一贴。[/quote] 是相关啊,你哪个字不懂我可以解释 另外你是楼主小号吗
於黾 2014-10-30
  • 打赏
  • 举报
回复
就算能实现,那也太复杂了 还不如变通的做法呢
phommy 2014-10-30
  • 打赏
  • 举报
回复
引用 14 楼 yuwenge 的回复:
[quote=引用 12 楼 phommy 的回复:] [quote=引用 11 楼 Z65443344 的回复:] [quote=引用 8 楼 phommy 的回复:] 关注下 初看以为是个很简单的需求,只要另起线程检查Application.OpenForms,弹出对话框后用Controls属性检索Button隐藏掉即可,但一试发现不知道为什么弹出的对话框并没有把自己加入OpenForms,可能与调用了user32.dll里的MessageBox有关
MessageBox是封装好的窗体,只能以模态窗体的形式弹出,跟普通Form不是一回事 而且即使它将自己加入了OpenForms,你确定能获取到里面的按钮吗?[/quote] 了解了。。 如果它是Form的话,通过Controls理应找的到其中的Button,但可惜不是就没办法了 不过大的思路应该没问题,弹出mbox前另起线程,把窗体中的button隐藏掉,但既然不是它form想来只能通过系统api来获取窗体,再SendMessage来隐藏button(应该也是个window)。具体的需要查手册我就不查了,思路供楼主参考。[/quote] messagebox并不是form,至少他不是继承自form。至于用windows api来操作,那叫做脱了裤子放屁,或者叫做南辕北辙更合适。[/quote] 其实变通的做法也没的讨论了,这里所有人包括楼主都知道怎么写Form,倒不妨试下严格按楼主要求能不能实现= =
youzelin 2014-10-30
  • 打赏
  • 举报
回复
引用 10 楼 phommy 的回复:
[quote=引用 9 楼 youzelin 的回复:] [quote=引用 8 楼 phommy 的回复:] 关注下 初看以为是个很简单的需求,只要另起线程检查Application.OpenForms,弹出对话框后用Controls属性检索Button隐藏掉即可,但一试发现不知道为什么弹出的对话框并没有把自己加入OpenForms,可能与调用了user32.dll里的MessageBox有关
不知道你在说什么,如果是不相关的问题,请另起一贴。[/quote] 是相关啊,你哪个字不懂我可以解释 另外你是楼主小号吗[/quote] 你看看我的回复再来怀疑一下是不是小号。PS:这地方还要小号?吃饱了没事干吗?你以为是 QQ 游戏号啊!
baidu_22669667 2014-10-29
  • 打赏
  • 举报
回复
楼上的都是正解!!自己做个form吧!!
加载更多回复(8)
 在C#中创建的文件选择对话框其实就是OpenFileDialog类的实例。通过对设定 OpenFileDialog类的属性来定制文件选择对话框的式样和功能。OpenFileDialog类的主要属性如下表: 属性 说明 AddExtension 该值指示如果用户省略扩展名对话框是否自动在文件名中添加扩展名。 CheckFileExists 该值指示如果用户指定不存在的文件名对话框是否显示警告。 CheckPathExists 该值指示如果用户指定不存在的路径对话框是否显示警告。 DefaultExt 获取或设置默认文件扩展名。 DereferenceLinks 该值指示对话框是否返回快捷方式引用的文件的位置或者是否返回快捷方式 FileName 字符串,获取或设置一个包含在文件对话框中选定的文件名的字符串。 FileNames 字符串数组,获取对话框中所有选定文件的文件名。 Filter 字符串,获取或设置当前文件名筛选器字符串该字符串决定对话框的"另存为文件类型"或"文件类型"框中出现的选择内容。 FilterIndex 整型,获取或设置文件对话框中当前选定筛选器的索引。 InitialDirectory 字符串,获取或设置文件对话框显示的初始目录。 Multiselect 布尔型,该值指示对话框是否允许选择多个文件。 ReadOnlyChecked 布尔型,该值指示是否选定只读复选框。 RestoreDirectory 布尔型该值指示对话框在关闭前是否还原当前目录。 ShowHelp 布尔型,该值指示文件对话框中是否显示"帮助"按钮。 ShowReadOnly 布尔型,该值指示对话是否包含只读复选框。 Title 字符串,获取或设置文件对话框标题。   C#通过调用OpenFileDialog类实例的ShowDialog方法显示创建的实例,这样一个文件选择对话框就显示出来了。   下列代码的作用在C#中通过创建一个OpenFileDialog实例,并设定此实例的各个属性值,来定制一个可以选择多个文件的文件选择对话框,并且把使用此对话框选择的多个文件名称通过提示框显示出来。请各位读者注意具体的实现方法: DialogResult d = openFileDialog1.ShowDialog(); if (d == DialogResult.OK) { string[] fileNames = openFileDialog1.FileNames; string fileNameString = string.Empty; foreach (string s in fileNames) { fileNameString = fileNameString + s + "\n"; } MessageBox.Show(fileNameString); }

110,529

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧