驭剑的秘密 发表于 2023-10-26 17:58:53

请C#大佬帮在下看看这是怎么个事儿,11月3日前保证来结算

本帖最后由 驭剑的秘密 于 2023-10-27 09:18 编辑

在学习C#中,找了一个软件,准备复刻它,遇到个问题,如图所示
图1:目标软件效果


图2:我的效果


在图1里边,文本被选中的时候背景色和字体颜色都改变了,取消选择时会恢复原样。

请问如何做到跟他的效果一样?

注:已经尝试过SelectionColor和SelectionBackColor

hrpzcf 发表于 2023-10-26 17:58:54

本帖最后由 hrpzcf 于 2023-10-28 00:35 编辑

你用的是 WPF 还是 WinForm?WPF 可以按照我的方法做(限 .NET Framework 4.7.2 或更高版本),WinForm 不熟,帮不了你

SelectionBrush="#000000"
SelectionOpacity="1"
SelectionTextBrush="#FFFF00"

<runtime>
        <AppContextSwitchOverrides value="Switch.System.Windows.Controls.Text.UseAdornerForTextboxSelectionRendering=false"/>
</runtime>




isdkz 发表于 2023-10-26 17:59:04

你可以使用C#中的RichTextBox控件来实现文本选中时背景色和字体颜色的改变效果。以下是一个实现该效果的示例代码:

private void richTextBox1_SelectionChanged(object sender, EventArgs e)
{
    // 获取当前选中文本的起始位置和长度
    int selectionStart = richTextBox1.SelectionStart;
    int selectionLength = richTextBox1.SelectionLength;

    // 设置选中文本的背景色和字体颜色
    richTextBox1.SelectionBackColor = Color.Yellow;
    richTextBox1.SelectionColor = Color.Red;

    // 将选中文本的起始位置和长度恢复到原始状态
    richTextBox1.SelectionStart = selectionStart;
    richTextBox1.SelectionLength = selectionLength;
}


在上述代码中,我们使用了RichTextBox的SelectionBackColor属性来设置选中文本的背景色,使用SelectionColor属性来设置选中文本的字体颜色。在SelectionChanged事件中,我们首先保存了当前选中文本的起始位置和长度,然后设置选中文本的背景色和字体颜色,最后将选中文本的起始位置和长度恢复到原始状态,以实现取消选择时的效果。

你可以将上述代码添加到你的项目中,并将richTextBox1_SelectionChanged方法与RichTextBox的SelectionChanged事件关联,即可实现与目标软件相同的效果。

陶远航 发表于 2023-10-26 17:59:22

要实现文本被选中时背景色和字体颜色同时改变的效果,可以使用RichTextBox控件的SelectionColor和SelectionBackColor属性结合起来设置。

示例代码如下:

// 设置文本选中时的字体颜色
richTextBox1.SelectionColor = Color.White;

// 设置文本选中时的背景色
richTextBox1.SelectionBackColor = Color.Blue;


在文本选择取消时,只需将SelectionColor和SelectionBackColor属性恢复到默认值即可。

示例代码如下:

// 恢复默认的字体颜色
richTextBox1.SelectionColor = Color.Black;

// 恢复默认的背景色
richTextBox1.SelectionBackColor = Color.White;


以上代码可以根据你的具体情况进行调整,确保在适当的时机设置和恢复这些属性。
请注意,本回答来自GPT-4
如果问题已经解决,请设置最佳答案

驭剑的秘密 发表于 2023-10-27 09:20:27

我快受不了了,这论坛真就全是AI吗,那AI回答的都驴唇不对马嘴,有无大佬帮帮忙啊

人造人 发表于 2023-10-27 09:36:50

驭剑的秘密 发表于 2023-10-27 09:20
我快受不了了,这论坛真就全是AI吗,那AI回答的都驴唇不对马嘴,有无大佬帮帮忙啊

毕竟用ai就能刷到最佳答案,为什么还要人来认真回答呢?
这个论坛大概已经没有人了,去一些微信群、qq群试试吧,那里至少还有人
我不玩c#,这个问题帮不了你了

vigiles163com 发表于 2023-10-27 14:04:19

驭剑的秘密 发表于 2023-10-27 09:20
我快受不了了,这论坛真就全是AI吗,那AI回答的都驴唇不对马嘴,有无大佬帮帮忙啊

也许是官方加的这个AI,要么炫一下自己的技术,要么这个站实在没人玩了用它凑个数

朕也来学学 发表于 2023-10-28 21:17:25

人造人 发表于 2023-10-27 09:36
毕竟用ai就能刷到最佳答案,为什么还要人来认真回答呢?
这个论坛大概已经没有人了,去一些微信群、qq群 ...

嗯嗯,id侠

陶烨 发表于 2023-10-28 22:32:44

尝试换个编译器

驭剑的秘密 发表于 2023-10-30 09:33:14

hrpzcf 发表于 2023-10-28 00:28
你用的是 WPF 还是 WinForm?WPF 可以按照我的方法做(限 .NET Framework 4.7.2 或更高版本),WinForm 不 ...

还是非常感谢相助,我用的是winform

驭剑的秘密 发表于 2023-10-30 17:36:13

hrpzcf 发表于 2023-10-28 00:28
你用的是 WPF 还是 WinForm?WPF 可以按照我的方法做(限 .NET Framework 4.7.2 或更高版本),WinForm 不 ...

大佬,我去看了下WPF,按照你这里说的,确实能弄出来效果,但是之前的描述没完整,再补充一下我的描述,麻烦再帮忙看看。


他的软件的文本里面有好几种颜色,被选中的时候,那些字都会直接变成互补色。
看起来不像是单纯地给选中的字体颜色设定颜色,请问这怎么搞

下面是他的效果




niunan 发表于 2023-10-30 20:43:58

查了下,WINFORM下的RichTextBox控件没有现成的属性的,选择文本时的样式蓝底白字这个应该是系统样式的。。如果非得改的话估计得自己写个richtextbox编辑器了。。。调用window api 之类的吧。。那太底层了。。不会。。。{:10_266:}{:10_266:}{:10_266:}
页: [1]
查看完整版本: 请C#大佬帮在下看看这是怎么个事儿,11月3日前保证来结算