[英]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.