簡體   English   中英

在用戶鍵入 MFC 時驗證編輯控件的文本

[英]Validating an Edit Control's text while the user types MFC

問題/問題:我有一個用戶在其中輸入用戶名的編輯控件(文本框)。 我正在嘗試將輸入的用戶名與列表控件中列出的用戶名進行比較。 如果給定的用戶名匹配,我的按鈕文本應該從Create User更改為Update User

我的問題是找到正確的事件/時間來比較字符串,而不是創建無限循環。

我試過的:我試過使用編輯控制事件EN_CHANGEEN_UPDATE 這兩個事件都會導致堆棧溢出異常或無限循環。 我認為每次鍵入內容或在我的編輯控件中使用退格鍵時都會調用這些事件之一。

在我的EN_CHANGE / EN_UPDATE事件中,我比較了用戶名字符串並設置了按鈕的文本。 對於任一事件,它被稱為無限次:

void Users::OnEnUpdateLoginName()  //EN_UPDATE Event
{
    bool match = false;

    //Compare the edit control text with each List Control text.
    for(int i = 0; i<m_UserList.GetItemCount(); i++)
    {
        if(strcmp(m_UserList.GetItemText(i,0),m_loginName)==0)
            match = true;
    }

    //If the usernames match, change the button's text to "Update User"
    if(match) 
    {
        CWnd *currentSelection = GetDlgItem(TXTC_LOGIN_NAME);
        currentSelection->SetWindowTextA("Update User");
    }
    else
    {
        CWnd *currentSelection = GetDlgItem(TXTC_LOGIN_NAME);
        currentSelection->SetWindowTextA("Create User");
    }
}

示例編輯控件 .

如果紅色文本匹配,請更改以藍色突出顯示的按鈕文本。

當用戶鍵入時,我是否應該使用不同的事件來實時驗證字符串?

我的代碼有兩個問題。 我需要使用UpdateData ,以便所有對話框控件的數據都是最新的。 我也在更新錯誤的變量。 謝謝@rrirower

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM