[英]Validating an Edit Control's text while the user types MFC
問題/問題:我有一個用戶在其中輸入用戶名的編輯控件(文本框)。 我正在嘗試將輸入的用戶名與列表控件中列出的用戶名進行比較。 如果給定的用戶名匹配,我的按鈕文本應該從Create User
更改為Update User
。
我的問題是找到正確的事件/時間來比較字符串,而不是創建無限循環。
我試過的:我試過使用編輯控制事件EN_CHANGE
和EN_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.