精华内容
下载资源
问答
  • 2012-07-16 19:22:49

    问题:当应用程序不是以 UserInteractive 模式运行时显示模式对话框或窗体是无效操作。请指定 ServiceNotification DefaultDesktopOnly 样式,以显示服务应用程序发出的通知。

       System.Windows.Forms.MessageBox.ShowCore(IWin32Window owner, String text, String caption, MessageBoxButtons buttons, MessageBoxIcon icon, MessageBoxDefaultButton defaultButton, MessageBoxOptions options, Boolean showHelp)

       System.Windows.Forms.MessageBox.Show(String text)

       prjBOI_TRO.Shipping.frmTransin.Gen_QSMC_UPS_SCS_Transin(String strLoadID, Int32 intI)

       prjBOI_TRO.Shipping.frmTransin.btnTransin_Click(Object sender, EventArgs e)

     

    解决:根据Exception的StackTrace信息可以看出,问题出在MessageBox身上,于是将程式里的MessageBox.Show替换掉,问题解决。

    PS:报错的程式是从winform系统中抽取出来的,然后设定了Windows Scheduled Task,而MessageBox没有对应修改掉。

    更多相关内容
  • 模式对话框作为父窗体,与非模式子对话框之间通过自定义消息通讯,同时设置子对话框为透明窗体
  • 模式对话框就是不处理它就没法处理父窗口,而非模式对话框就是不用先处理此对话框也可以处理父窗口.例子:在桌面上右击我的电脑,选择属性,弹出系统属性窗口,点击下面的技术支持,弹出技术支持信息,现在再对系统属性窗口...

    模式对话框就是不处理它就没法处理父窗口,而非模式对话框就是不用先处理此对话框也可以处理父窗口.例子:在桌面上右击我的电脑,选择属性,弹出系统属性窗口,点击下面的技术支持,弹出技术支持信息,现在再对系统属性窗口进行操作就操作不了,这种叫做模式对话框;关闭技术支持信息,在系统属性里选择硬件,点击设备管理器,弹出设备管理器窗口,现在再对系统属性窗口进行操作仍然可以操作,这种就叫做非模式对话框。

    在WIN32中,模式对话框的创建一般是使用DialogBox来进行创建的。而非模式对话框则是利用CreateWindow来创建的。在MFC或是WTL中,模式对话框一般是使用DoModal,而非模式对话框的创建则是使用Create。

    一、使用中的区别

    模式对话框创建后,程序的其他窗口便不能进行操作,必须将该窗口关闭后,其他窗口才能进行操作。而非模式对话框则无需这样,它不强制要求用户立即反应,而是与其他窗口同时接受用户操作。

    二、消息响应的区别

    在消息响应方面,模式对话框和非模式对话框之间又有着很大的区别。模式对话框工作的时候,它有内部的消息泵机制,控件之间的交互不用我们人为的去控制,系统会帮助我们去处理。非模式对话框则像普通窗口一样,则由WinMain中书写的消息循环驱动。但由于是对话框,它对一些消息有特殊的处理。因此,在消息循环中,需要先对对话框提供截获消息的机会。

    While (GetMessage(&msg, NULL, 0, 0))

    {

    if (hDlgModeless == 0 || !IsDialogMessage(hDlgModeless, &msg))

    {

        TranslateMessage(&msg);

        DispatchMessage( &msg);

    }

    }

    如果当前取得的消息是对话框的消息,IsDialogMessage 将它交由对话消息处理函数处理,并返回TRUE。不需要再派发了。

    注意:这个方法并不是很好用,因为当对话框过多的时候,处理起来就比较麻烦了。另一种处理的方法是利用子类化控件的方法,来处理控件间的交互。

    三、销毁的区别

    模式对话框的销毁是使用EndDialog,而非模式对话框的销毁是使用DestroyWindow.。所以我们在销毁对话框的时候,也要对其进行区别。

    非模式对话框,用户关闭对话框时,对话框消息处理函数将收到WM_CLOSE消息,接到后调用DestroyWindow以销毁非模式对话框。

    模式对话框,则一般响应IDOK和IDCANCEL。在PPC上,我们对于OK键和X键的处理要注意这点。

    四、其他

    非模态对话框的模板必须具有Visible风格,否则对话框将不可见,而模态对话框则无需设置该项风格。更保险的办法是调用ShowWindow(hDialog, SW_SHOW)来显示对话框,而不管对话框是否具有Visible风格。 

    非模态对话框对象是用new操作符在堆中动态创建的,而不是以成员变量的形式嵌入到别的对象中或以局部变量的形式构建在堆栈上。通常应在对话框的拥有者窗口类内声明一个指向对话框类的指针成员变量,通过该指针可访问对话框对象。

    通过调用Create函数来启动对话框,而不是DoModal,这是模态对话框的关键所在。由于Create函数不会启动新的消息循环,对话框与应用程序共用同一个消息循环,这样对话框就不会垄断用户的输入。Create在显示了对话框后就立即返回,而DoModal是在对话框被关闭后才返回的。众所周知,在MFC程序中,窗口对象的生存期应长于对应的窗口,也就是说,不能在未关闭屏幕上窗口的情况下先把对应的窗口对象删除掉。由于在Create返回后,不能确定对话框是否已关闭,这样也就无法确定对话框对象的生存期,因此只好在堆中构建对话框对象,而不能以局部变量的形式来构建之。

    因为是用new操作符构建非模态对话框对象,因此必须在对话框关闭后,用delete操作符删除对话框对象。

    必须有一个标志表明非模态对话框是否是打开的。这样做的原因是用户有可能在打开一个模态对话框的情况下,又一次选择打开命令。程序根据 标志来决定是打开一个新的对话框,还是仅仅把原来打开的对话框激活。通常可以用拥有者窗口中的指向对话框对象的指针作为这种标志,当对话框关闭时,给该指 针赋NULL值,以表明对话框对象已不存在了。

    注意:在C++编程中,判断一个位于堆中的对象是否存在的常用方法是判断指向该对象的指针是否为空。这种机制要求程序员将指向该对象的指针初始化为NULL值,在创建对象时将返回的地址赋给该指针,而在删除对象时将该指针置成NULL值。

     

     模态非模态
    形式上①一个模式对话框是一个有系统菜单、标题栏、边线等的弹出式窗口。在创建对话框时指定WS_POPUP, WS_SYSMENU, WS_CAPTION和 DS_MODALFRAME风格。即使没有指定WS_VISIBLE风格,模式对话框也会被显示。

    ②创建对话框窗口时,将发送WM_INITDIALOG消息(如果指定对话框的DS_SETFONT风格,还有WM_SETFONT消息)给对话框过程。(对话框的窗口过程由Windows系统提供,用户在创建对话框窗口时提供一个对话框过程由窗口过程调用。)

    ③对话框窗口被创建之后,Windows使得它成为一个激活的窗口,它保持激活直到对话框过程调用::EndDialog函数结束对话框的运行或者Windows激活另一个应用程序为止,在激活时,用户或者应用程序不可以激活它的所属窗口(Owner window)。
    ①一个无模式对话框是一个有系统菜单、标题栏、边线等的弹出式窗口。在创建对话框模板时指定WS_POPUP、WS_CAPTION、WS_BORDER和WS_SYSMENU风格。如果没有指定WS_VISIBLE风格,无模式对话框不会自动地显示出来。

    ②一个无模式对话框既不会禁止所属窗口,也不会给它发送消息。当创建一个模式对话框时,Windows使它成为活动窗口,但用户或者程序可以随时改变和设置活动窗口。如果对话框失去激活,那么即使所属窗口是活动的,在Z轴顺序上,它仍然在所属窗口之上。
     
    创建DoModal()Create()
    销毁一个应用程序通过调用::EndDialog函数来销毁一个模式对话框。一般情况下,当用户从系统菜单里选择了关闭(Close)命令或者按下了确认(OK)或取消(CANCLE)按钮,::EndDialog被对话框过程所调用。调用::EndDialog时,指定其参数nResult的值,Windows将在销毁对话框窗口后返回这个值,一般,程序通过返回值判断对话框窗口是否完成了任务或者被用户取消。

    ※ EndDialog(IDC_BUTTON_DEFAULT);我们的代码中EndDialog方法在指定的BUTTON处理事件结束时调用,来关闭对话框
    在应用程序结束之前,它必须销毁所有的无模式对话框。使用::DestroyWindow销毁一个无模式对话框,不是使用::EndDiaLog。一般来说,对话框过程响应用户输入,如用户选择了“取消”按钮,则自动调用::DestroyWindow;如果用户没有有关动作,则应用程序必须调用::DestroyWindow。
     

    展开全文
  • 最近在做一个WCF程序的时候,WCF程序老是弹出一个错误“当应用程序不是UserInteractive 模式运行时显示模式对话框窗体是无效操作。请指定ServiceNotification或DefaultDesktopOnly样式,以显示服务应用程序发出...

    最近在做一个WCF程序的时候,WCF程序老是弹出一个错误“当应用程序不是以UserInteractive 模式运行时显示模式对话框或窗体是无效操作。请指定ServiceNotification或DefaultDesktopOnly样式,以显示服务应用程序发出的通知”这个错误的警告,后来通过try catch语句来捕获到了这个错误,并找到了一些提示信息。

    很可能由 IncludeExceptionDetailInFaults=true 创建的 ExceptionDetail,其值为:
    System.InvalidOperationException: 当应用程序不是以 UserInteractive 模式运行时显示模式对话框或窗体是无效操作。请指定 ServiceNotification 或 DefaultDesktopOnly 样式,以显示服务应用程序发出的通知。
    在 System.Windows.Forms.MessageBox.ShowCore(IWin32Window owner, String text, String caption, MessageBoxButtons buttons, MessageBoxIcon icon, MessageBoxDefaultButton defaultButton, MessageBoxOptions options, Boolean showHelp)
    在 System.Windows.Forms.MessageBox.Show(String text)
    在 DataProvider.Utils.SQLServerHelper.Open() 位置 c:\Users\2457\Desktop\宁波市公路局\DataProvider(2015-10-26-最终版)\Utils\DataBaseSQLServerHelper.cs:行号 33
    在 DataProvider.Utils.SQLServerHelper..ctor(String connectStr) 位置 c:\Users\2457\Desktop\宁波市公路局\DataProvider(2015-10-26-最终版)\Utils\DataBaseSQLServerHelper.cs:行号 21
    在 DataProvider.Announcement..ctor() 位置 c:\Users\2457\Desktop\宁波市公路局\DataProvider(2015-10-26-最终版)\Announcement.cs:行号 21
    在 CreateDataProvider.Announcement()
    在 System.ServiceModel.Dispatcher.InstanceProvider.GetInstance(InstanceContext instanceContext, Message message)
    在 System.ServiceModel.Dispatcher.InstanceBehavior.GetInstance(InstanceContext instanceContext, Message request)
    在 System.ServiceModel.InstanceContext.GetServiceInstance(Message message)
    在 System.ServiceModel.Dispatcher.InstanceBehavior.EnsureServiceInstance(MessageRpc& rpc)
    在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage41(MessageRpc& rpc)
    在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc& rpc)
    在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc& rpc)
    在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage3(MessageRpc& rpc)
    在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage2(MessageRpc& rpc)
    在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc)
    在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1(MessageRpc& rpc)
    在 System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)}

        看到这些堆栈的调用信息之后,System.Windows.Forms.MessageBox.ShowCore这个是问题的核心,也就是在WCF程序中是不能出现窗体的相关代码,比如MessageBox、OpenFileDialog等相关代码,如果出现这些信息,程序就会经常出现这个错误,应为我们的WCF程序是部署在IIS上面的,IIS是不允许这样处理的。然后再看看我们的代码。

    private void Open()
    {
      try
      {
        sqlConn.Open();//打开数据库
      }
      catch (Exception ex) 
      {
        //MessageBox.Show(ex.Message);
      }
    }

    然后去掉整个程序中出现的MessageBox就可以了。通过这个BUG至少可以得出两点结论:

       1  必须学会使用try catch去捕获未知的错误,然后去查找相关的堆栈信息,然后一步步根据提示来解决问题。

       2  WCF程序中必须不能使用任何和窗体相关的类或者代码。

    对于Web版本也会出现类似的问题(MessageBox。Show());

    展开全文
  • 模式对话框 创建模式对话框步骤 创建模式对话框模板 IDD_COptionsDialog 构造一个CDialog对象,并封装对话框模板 COptionsDialog::COptionsDialog(CWnd* pParent /*=nullptr*/) : CDialog(IDD_COptionsDialog, ...
    模式对话框

    创建模式对话框步骤

    1. 创建模式对话框模板 IDD_COptionsDialog
      IDD_COptionsDialog
    2. 构造一个CDialog对象,并封装对话框模板
    COptionsDialog::COptionsDialog(CWnd* pParent /*=nullptr*/)
    	: CDialog(IDD_COptionsDialog, pParent)
    	, m_nHeight(0)
    	, m_nWidth(0)
    	, m_nUnits(-1)
    {
    	//  m_nHeight = 0;
    	//  m_nUnits = 0;
    }
    
    
    1. 调用CDialog:Domal()显示对话框
    //点击Options 菜单项
    void CChildView::OnFileOptions()
    {
    	// TODO: 在此添加命令处理程序代码
    		COptionsDialog m_CODlg;
    	    m_CODlg.m_nWidth = m_nWidth;
    		m_CODlg.m_nHeight = m_nHeight ;
    		m_CODlg.m_nUnits = m_nUnits  ;
    		if (m_CODlg.DoModal()==IDOK)
    		{
    			m_nWidth = m_CODlg.m_nWidth;
    			m_nHeight = m_CODlg.m_nHeight;
    			m_nUnits = m_CODlg.m_nUnits;
    			Invalidate();
    		}
    }
    
    无模式对话框

    在这里插入图片描述

    1. 创建对话框模板 IDD_COptionsDialog
      IDD_COptionsDialog
    2. 构造一个CDialog对象,并封装进对话框模板
    COptionsDialog::COptionsDialog(CWnd* pParent /*=nullptr*/)
    	: CDialog(IDD_COptionsDialog, pParent)
    	, m_nHeight(0)
    	, m_nWidth(0)
    	, m_nUnits(-1)
    {
    }
    
    
    1. 单击菜单项显示无模式对话框
    void CChildView::OnFileOptions()
    {
    	// TODO: 在此添加命令处理程序代码
    	if (m_pDialog != NULL)
    		m_pDialog->SetFocus();
    	else 
    	{
    		m_pDialog = new COptionsDialog;
    		m_pDialog->m_nWidth = m_nWidth;
    		m_pDialog->m_nHeight = m_nHeight;
    		m_pDialog->m_nUnits = m_nUnits;
    		m_pDialog->Create(IDD_COptionsDialog);
    		m_pDialog->ShowWindow(SW_SHOW);
    	}
    }
    
    1. 覆盖OnOKOnCancel
    void COptionsDialog::OnOK()
    {
    	// TODO: 在此添加专用代码和/或调用基类
    
    		UpdateData(TRUE);//上传Edit 里面的数据到成员
    		RECTPROP rect;
    		rect.m_nHeight = m_nHeight;
    		rect.m_nwidth = m_nWidth;
    		rect.m_nUnits = m_nUnits;
    		if (m_nWidth > 0 && m_nWidth <= 128)
    		{
    			AfxGetMainWnd()->SendMessage(WM_USER_APPLY, 0, (LPARAM)&rect);
    		}
    
    	//CDialog::OnOK();
    }
    
    void COptionsDialog::OnCancel()
    {
    	// TODO: 在此添加专用代码和/或调用基类
    	DestroyWindow(); //调用PostNcDestroy函数
    	//CDialog::OnCancel();
    }
    
    void COptionsDialog::PostNcDestroy()
    {
    	// TODO: 在此添加专用代码和/或调用基类
    	CDialog::PostNcDestroy();
    	AfxGetMainWnd()->SendMessage(WM_USER_DESTROYDIALOG, 0, 0);
    	delete this;
    }
    
    • 对话框消息传递给MainFrame
    Created with Raphaël 2.2.0 对框框窗口向MainFrame 消息WM_USER_DESTROYDIALOG MainFrame 向childView 发送WM_USER_DESTROYDIALOG childView 处理WM_USER_DESTROYDIALOG 结束
    • 代码
    //WM_USER_DESTROYDIALOG 自定义消息
    //#define WM_USER_DESTROYDIALOG 0x400 + 0x100
    //利用ON_MESSAGE() 宏映射自定义消息
    /* 
    BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
    	ON_WM_CREATE()
    	ON_WM_SETFOCUS()
    	ON_MESSAGE(WM_USER_APPLY,OnApply)
    	ON_MESSAGE(WM_USER_DESTROYDIALOG, OnDestoryDialog)//
    END_MESSAGE_MAP()
    */
    //COptionsDialog.cpp
    void COptionsDialog::PostNcDestroy()
    {
    	// TODO: 在此添加专用代码和/或调用基类
    	CDialog::PostNcDestroy();
    	AfxGetMainWnd()->SendMessage(WM_USER_DESTROYDIALOG, 0, 0);
    	delete this;//自己删除new出来的dialog 对象
    }
    
    //MainFrame.cpp
    LRESULT CMainFrame::OnDestoryDialog(WPARAM, LPARAM)
    {
    	m_wndView.SendMessage(WM_USER_DESTROYDIALOG, 0, 0);
    	return 0;
    }
    
    
    
    利用自定义消息传递数据
    //自定义结构体
    //targetver.h
    typedef struct 
    {
    	int m_nwidth;
    	int m_nHeight;
    	int m_nUnits;
    }RECTPROP;
    
    //COptionsDialogs.cpp
    void COptionsDialog::OnOK()
    {
    	// TODO: 在此添加专用代码和/或调用基类
    
    		UpdateData(TRUE);//上传Edit 里面的数据到成员
    		RECTPROP rect;
    		rect.m_nHeight = m_nHeight;
    		rect.m_nwidth = m_nWidth;
    		rect.m_nUnits = m_nUnits;
    		if (m_nWidth > 0 && m_nWidth <= 128)
    		{
    			//发送数据rect
    			AfxGetMainWnd()->SendMessage(WM_USER_APPLY, 0, (LPARAM)&rect);
    		}
    
    	//CDialog::OnOK();
    }
    
    //childview.cpp 取出数据
    LRESULT CChildView::OnApply(WPARAM wParam, LPARAM lParam)
    {
    	RECTPROP* prp = (RECTPROP*)lParam;
    	m_nWidth = prp->m_nwidth;
    	m_nHeight = prp->m_nHeight;
    	m_nUnits = prp->m_nUnits;
    	
    	switch (m_nUnits)
    	{
    	case 0:
    		m_nViewHeight = m_nHeight * 100;
    		break;
    	case 1:
    		m_nViewHeight = m_nHeight * 100;
    		break;
    	case 2:
    		m_nViewHeight = m_nHeight;
    		break;
    	}
    
    属性表CProperSheet与CProperPage
    • 创建 模式属性表的步骤如下:

    1.针对属性表的每一页创建一个对话框模板,定义页的内容和特性。将对话框标题
    设置成您希望在属性表页上方标签中显现的标题。
    2.针对属性表的每一页由CPropertyPage 派生出一个类似对话框的类,其中包含通过
    DDXDDV与页中控件相联系的公用数据成员。
    3.由CPropertySheet****派生出一个属性表类。将该属性表类和第2步中得到的属性表页
    类实例化
    。利用CPropertySheet :AddPage将各页按期望中的显示顺序添加到属性表中。
    4.调用属性表的 DoModal函数将属性表显示在屏幕上。

    • 设置模板sizepage,colorpage
      sziepagecolorpage
    • 派生CPropertyPage colorpage与sizepage
    //colorpage
    class CColorPage : public CMFCPropertyPage
    {
    	DECLARE_DYNAMIC(CColorPage)
    
    public:
    
    	CColorPage();
    	virtual ~CColorPage();
    
    protected:
    	DECLARE_MESSAGE_MAP()
    public:
    	int m_nColor;
    	afx_msg void OnBnClickedRadio();
    	virtual void DoDataExchange(CDataExchange* pDX);
    };
    
    ///sizepage
    class CSizePage : public CMFCPropertyPage
    {
    	DECLARE_DYNAMIC(CSizePage)
    public:
    	int m_nWidth;
    	int m_nHeight;
    	int m_nUnits;
    public:
    	CSizePage();
    	virtual ~CSizePage();
    
    protected:
    	DECLARE_MESSAGE_MAP()
    public:
    	afx_msg void OnEnChangeEdit();
    	
    	afx_msg void OnBnClickedRadio();
    	virtual void DoDataExchange(CDataExchange* pDX);
    };
    
    • 将page实例化并添加到CPropertySheet
    
    // CMyPropertySheet.h
    
    class CMyPropertySheet : public CPropertySheet
    {
    	DECLARE_DYNAMIC(CMyPropertySheet)
    
    public:
    	CMyPropertySheet(UINT nIDCaption, CWnd* pParentWnd = nullptr, UINT iSelectPage = 0);
    	CMyPropertySheet(LPCTSTR pszCaption, CWnd* pParentWnd = nullptr, UINT iSelectPage = 0);
    	virtual ~CMyPropertySheet();
    
    protected:
    	DECLARE_MESSAGE_MAP()
    public:
    	afx_msg void OnApply();
    public:
    	int m_nWidth;
    	int m_nHeight;
    	int m_nUnits;
    	int m_nColor;
    	CColorPage m_CColor;
    	CSizePage m_CSize;
    };
    
    //CMyPropertySheet.cpp 实现
    CMyPropertySheet::CMyPropertySheet(LPCTSTR pszCaption, CWnd* pParentWnd, UINT iSelectPage)
    	:CPropertySheet(pszCaption, pParentWnd, iSelectPage)
    {
    
    	m_nWidth = 0;
    	m_nHeight = 0;
    	m_nUnits = 0;
    	m_nColor = 0;
    	//添加page到sheet
    	AddPage(&m_CSize);
    	AddPage(&m_CColor);
    }
    
    • Domal() 显示CProperSheet
    void CChildView::OnFileOptions()
    {
    	// TODO: 在此添加命令处理程序代码
    	CMyPropertySheet ps(TEXT("Properties"));
    
    	ps.m_CSize.m_nWidth = m_nWidth;
    	ps.m_CSize.m_nHeight = m_nHeight;
    	ps.m_CSize.m_nUnits = m_nUnits;
    	ps.m_CColor.m_nColor = m_nColor;
    
    	if (ps.DoModal() == IDOK)
    	{
    		m_nWidth = ps.m_CSize.m_nWidth;
    		m_nHeight = ps.m_CSize.m_nHeight;
    		m_nUnits = ps.m_CSize.m_nUnits;
    		m_nColor = ps.m_CColor.m_nColor;
    		Invalidate();
    	}
    
    }
    
    • 运行效果

    sizecolor

    展开全文
  • !... 主窗口上面是一个容器panel,里面有3个下拉框,左边是一个toolStrip菜单栏,剩余部分是一个panel1(用来... // 添加w1窗体这里显示:非顶级窗体不能显示模式对话框。在调用 Show 之前应从所有父窗体中移除该窗体
  • windowsForm将窗体设置为对话框

    千次阅读 2019-01-15 16:59:24
    在使用C#做Windows窗体应用的时候,我遇到了一个问题: 我想在一个窗体中弹出一个带有文本框、标签、按钮等常用 控件的对话框,换句话说就是自己定制的“对话框”,我们...后将另一个独立的窗体看作是一个对话框类型...
  • C#将窗口变成模式对话框

    千次阅读 2017-10-13 22:32:27
    Form4 win4 = new Form4(); win4.ShowDialog();
  • 当应用程序不是 UserInteractive 模式运行时显示模式对话框窗体是无效操作。请指定 ServiceNotification 或 DefaultDesktopOnly 样式,以显示服务应用程序发出的通知。  堆栈信息:  [InvalidOp...
  • 模式对话框就是不处理它就没法处理父窗口,而非模式对话框就是不用先处理此对话框也可以处理父窗口.例子:在桌面上右击我的电脑,选择属性,弹出系统属性窗口,点击下面的技术支持,弹出技术支持信息,现在再对系统属性窗口...
  • 一、根据主窗口类型,MFC软件工程可以分为以下几种架构模型:1、SDI(Single Document Interface):单文档界面,一个主框架窗口下只能编辑一份文档。例如:记事本和画笔等。...3、基于对话框的软件模型:主窗口是通过...
  • 当应用程序不是 UserInteractive 模式运行时显示模式对话框窗体是无效操作。请指定 ServiceNotification 或 DefaultDesktopOnly 样式,以显示服务应用程序发出的通知。 原来MessageBox.Show(es.Message);这...
  • 对话框与多窗体设计

    2020-09-15 17:03:37
    本章介绍对话框和多窗体设计,调用方式,数据传递等问题 - Qt提供的标准对话框的式样 - 自定义对话框的设计和调用 - 在一个应用程序中如何设计多种窗体,基于QDialog, QWidget, QMainWindow创建的窗体的调用方式 - ...
  • 1、之前调试一直出现“已经可的窗体不能显示模式对话框...”的错误;2、最早其实网上很多说法都行,只是在调用主窗体A的控件值时,会默认以为要的是弹出窗体B的控件值;3、后来是这样解决的:主窗口A: DX_...
  • 使用ShowDialog方法显示窗体,当它在显示时,如果作为激活窗体,则其它窗体不可用,只有将其关闭后,其它窗体才能恢复可用状态。 如图:在form2打开时,form1不可用,只有当把form2关闭后,才能使用form1。 非...
  • 模式和非模式对话框

    2021-01-14 12:52:35
    模式和无模式对话框 可以使用类 CDialog 来管理两种类型的对话框: 1:模式对话框,要求用户在继续之前做出响应。 2:无模式对话框,可随时停留在屏幕上,但允许其他用户活动使用。 现在,通过程序来看一下什么是...
  • C#窗体编程:对话框

    2021-01-29 16:55:37
    对话框属性 (外观) Text 窗口标题 (窗口样式) MaximizeBox 最大化按钮 (窗口样式) MinimizeBox 最小化按钮 (窗口样式) ShowInTaskbar 是否在任务栏显示 (布局) StartPosition 窗口显示位置 (外观) FormBorderStyle ...
  • 任何窗体(派生于基类Form的类),都可以两种方式进行显示。 //非模式窗体 From qform=new Form(); qform.Show(); //模式窗体 Form qform=new Form(); qform.ShowDialog(); 一、控制权上的区别 Form.Show...
  • Form form1 = new form(); form1.TopLevel = false;//设置该窗体不为顶级窗体。 form1.show();//正常 form1.showdialog();//错误,因为TopLevel属性为false.
  • VC 创建对话框对象、显示对话框窗口、删除对话框对象,在一个模式对话框中创建确认和取消按钮,以下代码为主要的代码:  void CDemoDlg::OnOK()  {   //获得并检验对话框数据   if (!UpdateData(TRUE))   {   ...
  • //button1,显示一个模式对话框 private void button1_Click(object sender, System.EventArgs e) { Form form = new Form2( ); form.ShowDialog( ); } //button2,显示一个非模式对话框 private void button2_...
  • winform模式对话框和非模式对话框

    千次阅读 2009-07-23 15:34:00
    winform模式对话框和非模式对话框对于窗体的show和showdialog方法,大部人知道它们的区别,show是显示窗体后,本项目中的其他窗体也能获得焦点,而showdialog则不然,只能当前窗体的激活状态。这只是一方面。另一...
  • 提交下载文件后,我有一张表格。...这是我要显示模式对话框。Your Download is ready.Your Download link is here 提交表单后如何显示此对话框?提前致谢php大神给出的解决方案$("#softwareform"...
  • 以模式方法显示窗体的,在被创建的窗体关闭之前它都不会返回。通过显示地调用Close方法或设置DialogResult属性可以关闭这种窗体。 From.Show()方法 模式方法显示新的窗体并且立即返回,并不会在当前激活的窗体...
  • 这是一篇阅读小结,是关于《Windows Forms 程序设计》中模式与非模式对话框的部分。书乃大师所写,精妙至极,大师下笔慎重而惜墨,平淡之中蕴含新奇,因而往往点到即止。作为读者的我乃凡夫俗子,必定细细揣摩而后得...
  • JDialog窗体一、JDialog窗体二、重点内容1.super(超级)2.按钮Btton三、源码四、源码运行效果五、补充说明六、与小恐龙挑战的关系六、定位日期 一、JDialog窗体 JDialog窗体常用功能是从一个窗体中弹出另一个窗体。...
  • 1:有模式对话框:当这个对话框处于激活状态时,不能激活其他对话框,且将会 阻塞其他线程。直到这个对话框关闭之后才能进行其他操作 2:无模式对话框:与有模式相反,当这个对话框处于激活状态时,仍能够激活其 他...
  • 模态对话框弹出窗口阻止调用窗口的所有消息响应。只有在弹出窗口结束后调用窗口才能继续。在模态窗口“关闭”后,可以读取模态窗口中信息,包括窗口的返回状态,窗口子控件的值。非模态对话框可以在弹出窗口和调用...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,775
精华内容 7,910
关键字:

以模式对话框的方式显示窗体