我正在寻找一些示例代码/控件,通过ASP.NET中的jQuery让我感觉像gbox一样的消息框.
我正在编写一个应用程序(c#+ wpf),其中所有模态样式对话框都实现为UserControl覆盖main的半透明网格Window.这意味着只有一个Window,它保持了所有公司应用程序的外观和感觉.
要显示a MessageBox,语法如下:
CustomMessageBox b = new CustomMessageBox("hello world");
c.DialogClosed += ()=>
{
// the rest of the function
}
// this raises an event listened for by the main window view model,
// displaying the message box and greying out the rest of the program.
base.ShowMessageBox(b);
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,不仅执行流程实际上已经反转,而且与经典的.NET版本相比,它的冗长程度如此:
MessageBox.Show("hello world");
// the rest of the function
Run Code Online (Sandbox Code Playgroud)
我真正想要的是一种不会返回的方法,base.ShowMessageBox直到它引发了对话框关闭事件,但是我无法看到如何在不挂起GUI线程的情况下等待这一点,从而阻止用户点击OK.我知道我可以将一个委托函数作为函数的参数来ShowMessageBox阻止执行的反转,但仍会导致一些疯狂的语法/缩进.
我错过了一些明显的东西,还是有标准的方法来做到这一点?
我有一个带有3个按钮的消息框:是,否,帮助:
var result = MessageBox.Show("text", "title",
MessageBoxButtons.YesNo,
MessageBoxIcon.Warning,
MessageBoxDefaultButton.Button1,
true);
Run Code Online (Sandbox Code Playgroud)
我可以检测是否点击这样的是/否按钮:
if(result == DialogResult.Yes)
// some actions
Run Code Online (Sandbox Code Playgroud)
我如何检测到按下了帮助按钮并执行我自己的代码?
我正在尝试对MessageBoxImage枚举编写自己的抽象,并看到MessageBoxImage定义为:
namespace System.Windows
{
public enum MessageBoxImage
{
None = 0,
Error = 16,
Hand = 16,
Stop = 16,
Question = 32,
Exclamation = 48,
Warning = 48,
Asterisk = 64,
Information = 64,
}
}
Run Code Online (Sandbox Code Playgroud)
Show方法如何确定显示错误图像还是手形图像?我该如何编写一个采用MessageBoxImage类型并返回映射到MessageBoxImage类型的CustomMessageBoxImage类型的方法,因为我不能在同一switch语句中同时包含MessageBoxImage.Error和MessageBoxImage.Hand?
我们在Windows 2003 Server上运行DataSnap Delphi 2009应用程序.DataSnap客户端和服务器在Borland Socketserver上使用DCOM在同一台计算机上.客户端运行后台批处理作业.
有时,我们发现客户端无法连接到服务器应用程序并在服务器桌面上显示消息对话框,指示例如"无法连接到服务器.无法找到网络路径".或者"找不到Objectexporter".
我们的Delphi客户端代码从不使用消息对话框来显示错误或异常,而是使用try ... except .. finally ... end和logging来处理连接错误,所以我猜对话框是由DataSnap方法创建的.有没有办法抑制这个模态对话框?
更新:所有异常都在较低级别的例程中处理,主循环负责在引发异常(处理或未处理)时断开连接并重新连接:
while True do
begin
Connect;
while True do
begin
try
DoMyWork;
except
Break;
end;
end;
Disconnect;
end;
Run Code Online (Sandbox Code Playgroud) 在Ext.MessageBox中是否有一个Ext-approction方法来突出显示默认按钮(按Enter键触发的按钮)?
请注意,我不想通过在显示MessageBox时聚焦按钮来做到这一点(如果是"提示"对话框,我希望输入元素具有焦点).
我知道我可以通过在按钮元素中添加一个自定义类来实现这一点,但是...也许有更好的,更类似Ext的方式来做到这一点?
谢谢.
我正在使用HTML代码,我不想显示非警报消息或警告框,我不知道它叫什么,但是带有"确定"按钮的消息.
我想在加载页面时显示此警报.
我该怎么做呢?
如何使用"警报"框中的标题执行此操作?
我需要JavaScript吗?如果没有,如何在没有javascript的情况下这样做?
乔纳森
我试图使用winapi单击C#窗体的消息框上的"确定"按钮.以下是我正在处理的代码.
private const int WM_CLOSE = 16;
private const int BN_CLICKED = 245;
[DllImport("user32.dll", CharSet=CharSet.Auto)]
public static extern int SendMessage(int hWnd, int msg, int wParam, IntPtr lParam);
[DllImport("user32.dll", SetLastError = true)]
public static extern IntPtr FindWindowEx(IntPtr parentHandle, IntPtr childAfter, string className, string windowTitle);
//this works
hwnd = FindWindow(null, "Message");
if(hwnd!=0)
SendMessage(hwnd, WM_CLOSE, 0, IntPtr.Zero);
//this doesn't work.
hwndChild = FindWindowEx((IntPtr)hwnd, IntPtr.Zero, "Button", "ok");
SendMessage((int)hwndChild, BN_CLICKED, 0, IntPtr.Zero);
Run Code Online (Sandbox Code Playgroud)
虽然我得到了一个价值hwndChild,但它没有认识到BN_CLICKED.我不确定我错过了什么.任何帮助?
我试图关闭另一个应用程序的消息框按钮,这就是我正在做的事情.但是,我仍然缺少一些东西.
IntPtr hwndChild = IntPtr.Zero;
hwndChild = FindWindowEx((IntPtr)hwnd, …Run Code Online (Sandbox Code Playgroud) 我正在使用MessageBox不时为用户弹出警报消息.我的特定应用程序可以设置为远程运行,因此有时用户位于计算机前,有时用户可能不在计算机前几小时甚至几天.有时我会弹出一条警报消息MessageBox但在一段时间后警报不再相关.例如,我弹出一个警告,由于某些标准未得到满足,无法完成任务.几分钟后,该标准得到满足,任务就开始了.这MessageBox已不再适用.
我希望能够以编程方式关闭MessageBox这些消息不再相关的情况.这可能吗?目前我MessageBox使用以下方法在线程中创建我的对象:
new Thread(() => MessageBox.Show("Some text", "Some caption")).Start();
Run Code Online (Sandbox Code Playgroud)
我这样做,以便应用程序可以继续在后台工作,而不会被停止MessageBox.有什么建议?
我正在开发我的第一个WinForms应用程序...我通常会编写Web应用程序...
今天我的申请发生了一件奇怪的事情.如果我在我的计算机上运行该应用程序,或者我的同事在他的计算机上运行它,我的MessageBoxes仅对我的应用程序是模态的.这是期望的行为.如果出现消息框,我的用户将需要能够在单独的应用程序中进行手动编辑,并在消息框中单击"确定"将"取消暂停"我的应用程序并允许它们继续.
我们今天下午刚刚在两个最终用户的计算机上安装了该应用程序的测试版,出于某种原因,当我们在他们的任一台计算机上运行该应用程序时,消息框对于桌面来说是模态的 - 没有其他任何东西可以获得焦点,直到"确定"点击.此行为会导致我的应用程序出现巨大问题.
我不知道在用户的机器上会出现什么不同导致此行为.我的电脑 - Win7 64位,我的同事的电脑 - Win7 32位,两个用户的电脑是Win7 32位.所有都安装了.Net Framework 4.5或4.5.1.
有什么建议?
更新:
2014.11.17 - 代码段
DialogResult result = MessageBox.Show("The Style field did not pass validation.
Please manually fix the data then click OK to continue.",
"WARNING", MessageBoxButtons.OK,
MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1);
Run Code Online (Sandbox Code Playgroud)