制作新行时自动缩进

时间:2013-11-26 12:42:21

标签: c# winforms richtextbox indentation

我正在开发一个HTML编辑器的学校项目。现在,每当我创建一个新行时,我都会遇到如何进行自动缩进的问题。压痕的间距与其上方的线相同。我希望我的问题足够清楚。

private void richTextBox1_KeyDown(object sender, KeyEventArgs e)
{
   if (e.KeyCode == Keys.Return)
   {
       richTextBox1.Text = //this part, i don't know how to make it
   }

2 个答案:

答案 0 :(得分:0)

你说你已经搜索了两天了。你在搜索什么? How to implement automatic indentation?好吧,这可能不会引导您找到解决方案。 (编辑:实际上,即使这会给你一些结果......)

尝试将问题分成几部分。自动缩进需要哪些步骤?请注意,这不仅限于用户按下Enter键的情况!一旦确定了这些步骤,就可以开始对每个步骤进行单独搜索。这样,您将学习一些语言和框架功能,这些功能将比完整的代码解决方案更有帮助。

作为首发,可能的步骤可能包括:

  • 确定何时将新行/特定字符添加到文本
  • 确定何时将文字粘贴到文本框
  • 将文字附加到现有文字
  • 等...

答案 1 :(得分:0)

我不会在这里发布完整的代码,而是试图引导你走向逻辑,这样你就可以从概念到实现。我认为这将有助于更好地理解(a)如何处理一般的编码问题,以及(b)具体解决这个问题所需的代码。

首先,将您的问题分解为一系列独立的步骤......

  • 查找上一行
  • 计算以
  • 开头的行数/制表符数
  • 在最后一行附加相同数量的空格/制表符

其次,了解您的方法的局限性,并确保您的要求与这些限制不相容。

  • 假设:此解决方案适用于在文本框的END处添加的新行。

然后,开始弄清楚如何以您使用的任何语言实现您的逻辑。第一步是“找到上一行”。我们如何找到前一行?怎么样向后搜索,直到你遇到行终止符?看看你正在使用的语言是否有自动执行的操作(提示,C#确实... Google“LastIndexOf”并注意“StartIndex”参数)如果没有,请自行实现。

当您解决问题时,您可以搜索像SO这样的网站,以获得更集中,更有针对性的内容,例如“如何向后搜索字符串”,而不是像您提出的那样广泛的问题。

祝你好运,我对你的建议不关注代码。专注于导致代码的思维过程,其他东西将落实到位。