【问题标题】:Auto Indent when a new line is made [closed]换行时自动缩进[关闭]
【发布时间】:2013-11-26 21:33:15
【问题描述】:

我正在做一个 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
   }

【问题讨论】:

  • 到目前为止你尝试过什么?您需要使用制表符或空格缩进吗?
  • 嗨 Hafiz,你的代码是什么?
  • 实际上,当与标签结合使用时,您的问题完全有意义。感觉就像 1)我会做家庭作业,2)你会得到免费的工作,实际上并不关心从结果中学到什么。
  • @nphx 先生/女士,我不是在开玩笑。
  • @ChrisK 我试过使用按钮但还是不行

标签: c# winforms richtextbox indentation


【解决方案1】:

我不会在这里发布完整的代码,而是尝试引导您了解逻辑,以便您可以将其从概念带到实现。我认为这将有助于更深入地了解 (a) 如何解决一般的编码问题,以及 (b) 具体解决该问题所需的代码。

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

  • 查找上一行
  • 算出该行开头有多少个空格/制表符
  • 在最后一行添加相同数量的空格/制表符

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

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

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

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

祝你任务顺利,我对你的建议不要专注于代码。专注于导致代码的思考过程,其他事情就会落实到位。

【讨论】:

  • 谢谢您,先生/女士。这对我帮助很大!我从来没有考虑过如何搜索解决方案。
【解决方案2】:

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

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

首先,可能的步骤可能包括:

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

【讨论】:

  • 谢谢您的建议,先生/女士。每当我尝试搜索解决方案时,我从不使用“How to..”,因为我们不允许使用“How to..”“How can I..”等等。再次感谢您,先生/女士
猜你喜欢
  • 1970-01-01
  • 2014-05-07
  • 1970-01-01
  • 1970-01-01
  • 2013-01-10
  • 2016-07-03
  • 1970-01-01
  • 2012-12-11
  • 1970-01-01
相关资源
最近更新 更多