小编OC_*_*OC_的帖子

语法突出显示性能问题

我有一个RichTextBox,一旦用户加载文件,我的程序就会继续扫描整个文件,以便更改某些单词的颜色.这是我的代码:

static Regex cKeyWords = new Regex(@"\b(?=[a-gilr-w])(?:
     s(?:hort|i(?:gned|zeof)|t(?:atic|ruct)|witch) | c(?:ase|har|on(?:st|tinue)) |
     e(?:lse|num|xtern) | i(?:f|nt) | f(?:loat|or) | d(?:o|efault|ouble) | un(?:ion|signed) |
     re(?:gister|turn) | vo(?:id|latile) | while | break | long | typedef | auto | goto
     )\b",
     RegexOptions.Compiled | RegexOptions.IgnorePatternWhitespace);

...

programTextBox.Enabled = false;
int selectStart = this.programTextBox.SelectionStart;
programTextBox.SuspendLayout();
MatchCollection matches = cKeyWords.Matches(programTextBox.Text);
foreach (Match match in matches)
{
    if (match.Index == 0)
        programTextBox.Select(match.Index, match.Length/* - 1*/);
    else
        programTextBox.Select(match.Index + 1, match.Length - 1);
    programTextBox.SelectionColor = Color.Blue;
}
programTextBox.Select(selectStart, 0); …
Run Code Online (Sandbox Code Playgroud)

c# regex syntax-highlighting richtextbox winforms

7
推荐指数
1
解决办法
316
查看次数

两个Richtextbox(C#)的同步滚动

我需要一些帮助.目前我正在使用C#中的脚本编辑器,我有两个丰富的文本框:programTextBox,其中整个文本是和linesTextBox,它计算并显示行数.

我希望他们同时滚动.我做了一些搜索,实际上我找到了一些有效的代码,但是如果有一些问题.这是代码:

public enum ScrollBarType : uint
{
    SbHorz = 0,
    SbVert = 1,
    SbCtl = 2,
    SbBoth = 3
}
public enum Message : uint
{
    WM_VSCROLL = 0x0115
}
public enum ScrollBarCommands : uint
{
    SB_THUMBPOSITION = 4
}
[DllImport("User32.dll")]
public extern static int GetScrollPos(IntPtr hWnd, int nBar);
[DllImport("User32.dll")]
public extern static int SendMessage(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam);
Run Code Online (Sandbox Code Playgroud)

...

private void programTextBox_VScroll(object sender, EventArgs e)
{
    int nPos = GetScrollPos(programTextBox.Handle, (int)ScrollBarType.SbVert);
    nPos <<= 16;
    uint …
Run Code Online (Sandbox Code Playgroud)

c# richtextbox cursor winforms synchronized-scrolling

5
推荐指数
1
解决办法
515
查看次数

RichTextBox TextChanged未触发

我的TabControl页面中有一个RichTextBox。请注意,RichTextBox是通过以下代码以编程方式制作的:

TabPage addedTabPage = new TabPage("Tab Page");
tabControl.TabPages.Add(addedTabPage);

RichTextBox addedRichTextBox = new RichTextBox()
{
    Parent = addedTabPage,
    Dock = DockStyle.Fill,
    /* ... */
};
Run Code Online (Sandbox Code Playgroud)

此外,在每种方法的开头,我都使用以下代码来访问RichTextBox:

RichTextBox programTextBox = 
    (RichTextBox)tabControl.TabPages[tabControl.SelectedIndex].Controls[0];
Run Code Online (Sandbox Code Playgroud)

程序中的所有内容似乎都可以正常运行,但我注意到Text_Changed事件从未触发过。为什么会发生这种情况,以及如何使此事件触发(最好像在简单的RichTextBox中那样由其自身触发)。

c# tabcontrol richtextbox winforms

2
推荐指数
1
解决办法
611
查看次数

在无边框形式上使用 Windows 动画

最近我(主要是出于好奇)做了一个无边界的表格。制作我自己的标题栏,包括标题和三个按钮(最小化、最大化和关闭),就像每个普通的 Windows 程序一样。我还为这些按钮制作了代码(只需询问您是否想查看代码)。

但是,我注意到没有动画。我的意思是,例如,如果我单击最小化按钮,则没有动画,程序会立即消失(它没有关闭,按钮起作用,但没有动画)。这在所有情况下都会发生:当我打开程序时,它会立即出现,当我关闭它时,它会立即消失。

是否有某种方法可以使用标准 Windows 程序使用的这些动画?

c# animation winforms borderless

1
推荐指数
1
解决办法
5084
查看次数