WinForm:一个登陆窗体引发的问题系列(六):Textbox的记忆功能
本来文章到这里似乎都可以结束了,但是在最后又萌生了一个念头,为了更提高软件的交互性和人性化,我在这里继续添加一个软件记忆功能。
实现的效果图,大致如下:
其实使用软件功能主要要用到textbox的三个属性AutoCompleteCustomSource、AutoCompleteSource、AutoCompleteMode,具体相关属性可参阅MSDN文档:http://msdn.microsoft.com/zh-cn/vstudio/system.windows.forms.textbox.autocompletesource.aspx
OK,设置 txtName的AutoCompleteMode属性为SuggestAppend
AutoCompleteSource属性为CustomSource
给代码做两个地方的修改
一个是(主要是读历史记录)
if (reg.IsMatch(this.txtName.Text))
{
e.Handled = false;
if (File.Exists(@"c:\1.txt"))//路径和文件类型大家自己设置
{
StreamReader sr = new StreamReader(@"c:\1.txt",true);
string str = sr.ReadLine();
while (str != null)//判断不为空行
{
if (!this.txtName.AutoCompleteCustomSource.Contains(str))//是否包含集合里
{
this.txtName.AutoCompleteCustomSource.Add(str);//不包含添加
}
str = sr.ReadLine();
}
sr.Close();
}
}
{
e.Handled = false;
if (File.Exists(@"c:\1.txt"))//路径和文件类型大家自己设置
{
StreamReader sr = new StreamReader(@"c:\1.txt",true);
string str = sr.ReadLine();
while (str != null)//判断不为空行
{
if (!this.txtName.AutoCompleteCustomSource.Contains(str))//是否包含集合里
{
this.txtName.AutoCompleteCustomSource.Add(str);//不包含添加
}
str = sr.ReadLine();
}
sr.Close();
}
}
另外一处(存入历史记录)
if (Reader.HasRows)//判断是否有查询到对象的数据
{
if (File.Exists(@"c:\1.txt"))//判断文件存在
{
if (!this.txtName.AutoCompleteCustomSource.Contains(this.txtName.Text))//判断记录是否存在
{
StreamWriter sw = new StreamWriter(@"c:\1.txt",true);//true参数不可少,否则会覆盖以前存入的记录
sw.WriteLine(this.txtName.Text.Trim());//存入记录
sw.Close();//关闭文件流
if (!this.txtName.AutoCompleteCustomSource.Contains(this.txtName.Text))
{
this.txtName.AutoCompleteCustomSource.Add(this.txtName.Text);
}
}
}
this.DialogResult = DialogResult.OK;
}
{
if (File.Exists(@"c:\1.txt"))//判断文件存在
{
if (!this.txtName.AutoCompleteCustomSource.Contains(this.txtName.Text))//判断记录是否存在
{
StreamWriter sw = new StreamWriter(@"c:\1.txt",true);//true参数不可少,否则会覆盖以前存入的记录
sw.WriteLine(this.txtName.Text.Trim());//存入记录
sw.Close();//关闭文件流
if (!this.txtName.AutoCompleteCustomSource.Contains(this.txtName.Text))
{
this.txtName.AutoCompleteCustomSource.Add(this.txtName.Text);
}
}
}
this.DialogResult = DialogResult.OK;
}
为了方便以后使用,你完全可以写成自己的控件,具体方法略~
作者:Jason_z(开发者的网上家园 - 博客园)
出处:http://www.cnblogs.com/Jason_z/
文章版权归本人所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
分类:
windows Form
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现