小编Kam*_* N.的帖子

Winforms - 如何显示/隐藏设计师中的元素?

我正在尝试使用winforms进行多页面应用程序.我决定使用多个面板 - 每个面板代表不同的页面,所以当我需要显示不同的内容时,我可以在它们之间切换.

我的问题是在设计师视图中堆叠面板.当我有2个以上的全屏面板时,它们都堆叠在一起,我看不到我之前创建的那个.这有什么解决方案吗?更改可见性不会影响设计者视图.可以把它想象成一个类似Photoshop的选项来显示/隐藏图层.我正在使用Visual C#2010 Express.

visual-studio-2010 visual-studio winforms

24
推荐指数
2
解决办法
2万
查看次数

C++/MFC访问控件变量时出错

我为CEdit创建了一个控件的变量:

class CGateDlg : public CDialog
{
    ...
    public:
        // here is my control's variable
        CEdit m_edit_a;
        // here I map variable to control
        virtual void DoDataExchange(CDataExchange* pDX);
}
Run Code Online (Sandbox Code Playgroud)

这就是我将变量映射到控件的方式:

void CGateDlg::DoDataExchange(CDataExchange* pDX)
{
    CDialog::DoDataExchange(pDX);
    DDX_Control(pDX, IDC_EDIT_A, m_edit_a);
}
Run Code Online (Sandbox Code Playgroud)

这是它的工作原理:用户在编辑框中键入一些文本.然后他按下"重置"按钮,清除编辑框.这是一段代码,负责在单击"重置"按钮后清除编辑框:

void CGateDlg::OnBnClickedReset()
{
    // clear edit box 
    m_edit_a.SetWindowTextW(L"");
}
Run Code Online (Sandbox Code Playgroud)

应用程序启动时没有任何错 我在EditBox中键入一些文本并点击"重置"按钮.然后我得到一个错误,导致我winocc.cpp,第245行(ENSURE(this)):

void CWnd::SetWindowText(LPCTSTR lpszString)
{
    ENSURE(this);
    ENSURE(::IsWindow(m_hWnd) || (m_pCtrlSite != NULL));

    if (m_pCtrlSite == NULL)
            ::SetWindowText(m_hWnd, lpszString);
    else
            m_pCtrlSite->SetWindowText(lpszString);
}
Run Code Online (Sandbox Code Playgroud)

我认为问题在于hWnd:

this    0x0030fa54 {CEdit hWnd=0x00000000}  CWnd * const
Run Code Online (Sandbox Code Playgroud)

但是如何解决呢?

当我使用以下方法访问控件的值时,一切正常: …

c++ mfc

4
推荐指数
1
解决办法
6087
查看次数

标签 统计

c++ ×1

mfc ×1

visual-studio ×1

visual-studio-2010 ×1

winforms ×1