gpt4 book ai didi

c# - 如何在 RichTextBox 中有选择地给字符串加下划线?

转载 作者:行者123 更新时间:2023-12-05 03:16:07 24 4
gpt4 key购买 nike

在我的程序中单击按钮后 - 选定的 ListView 条目应复制到 RichTextBox。 ListView包含联系人信息,我要实现的效果类似于Oultook中的效果(从通讯录中选择联系人时)。我用于此目的的部分代码如下所示:

    private void toButton_Click(object sender, EventArgs e)
{
int start = 0;
for (int i = 0; i < contactsListView.SelectedItems.Count; i++)
{
if (contactsTextBox.TextLength != 0) contactsTextBox.Text += "; ";
start = contactsTextBox.TextLength;
contactsTextBox.Text += contactsListView.SelectedItems[i].Text + " " + contactsListView.SelectedItems[i].SubItems[1].Text + " [" + contactsListView.SelectedItems[i].SubItems[2].Text + "]";
contactsTextBox.Select(start, contactsTextBox.TextLength);
contactsTextBox.SelectionFont = new Font(contactsTextBox.SelectionFont, FontStyle.Underline);
contactsTextBox.DeselectAll();
contactsTextBox.SelectionFont = new Font(contactsTextBox.SelectionFont, FontStyle.Regular);
}
}

不幸的是,整个文本都继承了 FontStyle,我从 ListView 输入后输入的所有内容也带有下划线。

所以我的问题是 - 如何仅在某些文本(我犯了错误的地方)下划线?

在stackoverflow上有类似的话题here不幸的是,在我的案例中,解决方案表明会浪费资源。

最佳答案

试试这个:

        int start = 0;
for (int i = 0; i < contactsListView.SelectedItems.Count; i++)
{
if (contactsTextBox.TextLength != 0) contactsTextBox.Text += "; ";
start = contactsTextBox.TextLength;
contactsTextBox.Text += contactsListView.SelectedItems[i].Text +" " + contactsListView.SelectedItems[i].SubItems[1].Text + " [" + contactsListView.SelectedItems[i].SubItems[2].Text + "]";
}


this.contactsTextBox.Text += " ";
this.contactsTextBox.SelectionStart = 0;
this.contactsTextBox.SelectionLength = this.contactsTextBox.Text.Length-1;
contactsTextBox.SelectionFont = new Font(contactsTextBox.SelectionFont, FontStyle.Underline);
this.contactsTextBox.SelectionLength = 0;

完全 hack,但基本上,如果在文本全部存在后选择文本,但不要选择所有文本(这就是为什么我添加额外的“”)然后设置选择文本,它具有预期的效果.

关于c# - 如何在 RichTextBox 中有选择地给字符串加下划线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/821347/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com