c# - 如何使文本框上的文本选择增加
问题描述
我需要在 Visual Studio 上完成一个带有表单的程序,我有一个文本框(txtUser)、另一个文本框(txtKerko)和一个按钮(btnKerko)。所以程序是这样的,用户在 txtUser 上写一些文本并在 txtKerko 上写任何单词或文本,当单击 btnKerko 时,应该在 txtUser 上选择写在 txtKerko 上的单词,如果该单词中有多个单词,则所有单词应在每次 btnKerko 点击时选择。它几乎准备好了,但是当有多个单词要逐个递增时,我无法完成该部分。这是 btnKerko 的事件代码:
private void BtnKerko_Click(object sender, EventArgs e)
{
if (txtUser.Text.Contains(txtKerko.Text) == true)
{
txtUser.Focus();
string teksti = txtUser.Text;
txtUser.SelectionStart = teksti.IndexOf(txtKerko.Text);
txtUser.SelectionLength = txtKerko.TextLength;
}
else
{
MessageBox.Show("Nuk u gjet");
}
}
解决方案
是的,如果您想一个一个地选择单词,您可以这样做。您可以使用此代码:
int lastIndex = 0;
private void BtnKerko_Click(object sender, EventArgs e)
{
txtUser.Focus();
int index = txtUser.Text.IndexOf(txtKerko.Text, lastIndex);
if (index != -1)
{
lastIndex = index + 1;
txtUser.SelectionStart = index;
txtUser.SelectionLength = txtKerko.TextLength;
}
}
如您所见,该变量lastIndex
在每次单击按钮时都保存最后一个选择。我猜您知道IndexOf
方法的第二个参数告诉您从第二个参数值开始查找索引。
推荐阅读
- r - R - 如何使用带有查找表的 tidyr/dplyr 在附加列中添加匹配数据
- laravel - 为什么删除注册类型的url总是一样的?
- bash - 迭代在 Bash 中特定月份创建的目录
- sql - 同一张表的多个查询的SQL结构(使用窗口函数、case、join)
- backup - InfluxDB 最大可用过期时间和性能问题
- node.js - 如何在 Winston Http Transport 上捕获错误
- ruby-on-rails - 我应该把钥匙放在我的 Rails 应用程序的哪里?
- facebook - 使用小鸭时,“从 7 月 22 日到 30 日”错误开始日期
- javascript - 语音识别在收听后提供未知错误
- javascript - 滚动时淡入淡出动画