Winforms RichTextBox 中的两列

2024-04-26

在 C# 中,我需要能够在单个 RichTextBox 中至少给出 2 列的印象。出于我的目的,它可能看起来像这样:

1+1             2
70*8+5          565
1000000-300000  700000
76-10           66

对于左栏中的每个“问题”,都会有相应的答案。

“明显”的解决方案是使用这样的选项卡:

SelectionTabs = new int[] { 0, 500 };

(或者简单地将原始 Rtf 中的 \deftab 设置为大约 3000)。

这一切都很好,直到左列输入本身包含选项卡。当这种情况发生时,一切都会变得梨形。我不介意插入多个制表位,但是当输入包含有时“超过”特定制表位的文本时,这将无法正常工作。检测到这一点并正确解释它不仅很难做到,而且由于打印时出现的“几乎但不完全是所见即所得”的结果以及标签受到的影响而充满危险。

另一个想法是有一个全局制表符大小(在 Rtf 中使用 \deftab),然后计算在左列中的每行之后应自动插入多少个制表符(基于左列中最长的行)。这种方法的问题在于,虽然屏幕上看起来很棒,但在打印时,右栏却出现了一些故障。我所说的“故障”是指大约每 20 行中就有 1 行会有“丢失”或“额外”选项卡。这是因为即使在我遵循本教程之后,打印也不完全是所见即所得:http://msdn.microsoft.com/en-us/library/ms996492.aspx http://msdn.microsoft.com/en-us/library/ms996492.aspx

可以说,与 RichTextBox 在屏幕上的视图相比,即使打印时偏离几个像素/点也会对选项卡的位置产生巨大影响。

我还尝试过更改 Rtf 中一行的中间制表位位置,但不幸的是,这样的控制代码是从行的开头应用的,尽管它在 Rtf 中的位置。

我也一直在梳理 Rtf 规范http://www.biblioscape.com/rtf15_spec.htm http://www.biblioscape.com/rtf15_spec.htm,而我似乎对此无能为力。 C# 的 RichTextBox 似乎不太适合表格(这是另一个潜在的解决方案)。还有 Rtf 列,但即使支持它们,它们也可能无济于事,因为一旦填充,第一列将切换到同一张纸上的第二列(而不是保留第一列和转到纸张的第二页,这就是我想要的)。

我已经为这个问题花了很多时间,但我完全不知所措。如此简单的事情实际上要做好却非常棘手。除非我错过了一些明显的东西......

----------------编辑1: 这需要使用非固定宽度的字体,所以我不能只用空格填充。


技巧很简单:我最近做了同样的事情(好吧,几乎) - 我必须创建一个文本文件 这给人的印象是它有多个列(在文本文件中?sheesh)

有什么窍门吗?填充!

假设你有之前所说的价值观

1+1             2
70*8+5          565
1000000-300000  700000
76-10           66

现在,您需要做的就是设置width (in 人物)左列,以及width对于右列。假设两个宽度都是 30 个字符。

您现在所要做的就是构造一行,如以下伪代码所示:

BEGIN-BUILD-TEXT
     FOR EACH PAIR X, Y
         STRING S1 = X.PADRIGHT(30);
         STRING S2 = Y.PADRIGHT(30);
         WRITE_LINE_TO_TEXTBOX(S1 + S2);

这样,列将左对齐并具有固定宽度。

为我工作!

EDIT: Your RichTextBox应该使用固定宽度的字体(它有相同宽度对于所有字符)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Winforms RichTextBox 中的两列 的相关文章

  • 获取 std::variant 当前持有的 typeid(如 boost::variant type())

    我已经从 boost variant 迁移到 std variant 但遇到了障碍 我在 boost type 中使用了一个很好的函数 它可以让你获取当前持有的 typeid 看https www boost org doc libs 1
  • 是否允许将类模板类型参数键入相同的名称?

    这似乎可以在 MSVC 中按预期编译甚至工作 但它是合法的 C 代码吗 它是否能保证执行此处所期望的操作 即将模板类型导出到结构体的同名用户 template
  • 使用 OpenGL 着色器进行数学计算 (C++)

    我有一个矩阵 例如 100x100 尺寸 我需要对每个元素进行计算 matrix i j tt 8 5例如 我有一个巨大的矩阵 我想使用 OpenGL 着色器来实现该算法 我想使用着色器 例如 uniform float val unifo
  • C# 中四舍五入到偶数

    我没有看到 Math Round 的预期结果 return Math Round 99 96535789 2 MidpointRounding ToEven returning 99 97 据我了解 MidpointRounding ToE
  • 无法从 Web api POST 读取正文数据

    我正在尝试从新的 Asp Net Web Api 中的请求中提取一些数据 我有一个像这样的处理程序设置 public class MyTestHandler DelegatingHandler protected override Syst
  • 是否有像 gccxml 这样的用于生成包装器的 C 标头解析器工具?

    我需要为一种新的编程语言编写一些 C 标头包装器 并且想要类似 gccxml 的东西 但不完全依赖 gcc 以及它在 Windows 系统上带来的问题 只需要读C而不是C 只要有完整的文档记录 任何格式的输出都可以 Linux Solari
  • 如何使用 wpf webbrowser 将数据发布到 Web 服务器

    我想从数据库获取数据并使用它来让用户登录到网站 我有一个包含 Web 浏览器控件的 wpf 页面 我有这样的代码 用于将用户登录到用 php 编写的网站
  • 单线程公寓问题

    从我的主窗体中 我调用以下命令来打开一个新窗体 MyForm sth new MyForm sth show 一切都很好 但是这个表单有一个组合框 当我将其 AutoCompleteMode 切换为建议和追加时 我在显示表单时遇到了这个异常
  • 我可以仅在少数情况下关闭模拟吗

    我有一个始终使用模拟的应用程序 但是 当用户以管理员身份登录时 一些操作需要他们写入服务器本身 现在 如果这些用户在实际服务器上没有权限 有些用户没有 则不会让他们写入 我想做的是关闭几个命令的模拟 有没有办法做这样的事情 using Ho
  • 手动将 ClientBase 集合类型从 Array[] 更改为 List<>

    我将自己的 WCF 代理与 Client Base 一起使用 我想做一些类似于 svc util 中的 ct 属性的操作 并告诉代理返回 List 集合类型 我不能使用 List 因为实体由 nhibernate 管理 所以我必须使用 IL
  • C#中Enum中定义的value__是什么

    What value 可能在这里 value MSN ICQ YahooChat GoogleTalk 我运行的代码很简单 namespace EnumReflection enum Messengers MSN ICQ YahooChat
  • 不兼容的类型 - 是因为数组已经是指针吗?

    在下面的代码中 我创建一个基于书籍结构的对象 并让它保存多个 书籍 我设置的是一个数组 即定义 启动的对象 然而 每当我去测试我对指针的了解 实践有帮助 并尝试创建一个指向创建的对象的指针时 它都会给我错误 C Users Justin D
  • 如何使用收益返回和递归获得字母的每个组合?

    我有几个像这样的字符串列表 可能有几十个列表 1 A B C 2 1 2 3 3 D E F 这三个仅作为示例 用户可以从几十个具有不同数量元素的类似列表中进行选择 再举个例子 这对于用户来说也是一个完全有效的选择 25 empty 4 1
  • 相当于 C# 中 Java 的“ByteBuffer.putType()”

    我正在尝试通过从 Java 移植代码来格式化 C 中的字节数组 在 Java 中 使用方法 buf putInt value buf putShort buf putDouble 等等 但我不知道如何将其移植到 C 我尝试过 MemoryS
  • #pragma pack(16) 和 #pragma pack(8) 的效果总是相同吗?

    我正在尝试使用来对齐数据成员 pragma pack n http msdn microsoft com en us library 2e70t5y1 28v vs 100 29 aspx 以下面为例 include
  • 如何将对象转换为传递给函数的类型?

    这不会编译 但我想做的只是将对象转换为传递给函数的 t public void My Func Object input Type t t object ab TypeDescriptor GetConverter t ConvertFro
  • C++ [Windows] 可执行文件所在文件夹的路径[重复]

    这个问题在这里已经有答案了 我需要访问一些文件fstream在我的 Windows 上的 C 应用程序中 这些文件都位于我的exe文件所在文件夹的子文件夹中 获取当前可执行文件的文件夹路径的最简单且更重要的 最安全的方法是什么 Use 获取
  • 如何设置 CMake 与 clang 交叉编译 Windows 上的 ARM 嵌入式系统?

    我正在尝试生成 Ninja makefile 以使用 Clang 为 ARM Cortex A5 CPU 交叉编译 C 项目 我为 CMake 创建了一个工具链文件 但似乎存在错误或缺少一些我无法找到的东西 当使用下面的工具链文件调用 CM
  • C# 粘贴到文本框时检查剪贴板中的字符

    有没有一些方法可以在粘贴到文本框 C 之前仅检查剪贴板中的字符 Ctrl V 和右键单击 gt 粘贴 但不使用 MaskedTextbox 在文本框文本更改中添加规则以仅接受数字 例如 private string value privat
  • 无法使 Polly 超时策略覆盖 HttpClient 默认超时

    我正在使用 Polly 重试策略 并且正如预期的那样 在重试过程中HttpClient达到 100 秒超时 我尝试了几种不同的方法来合并 Polly 超时策略 将超时移至每次重试而不是总计 但 100 秒超时仍然会触发 我读过大约 5 个

随机推荐

  • 泽西岛 java.lang.ClassNotFoundException: com.sun.jersey.spi.container.servlet.ServletContainer

    我正在尝试使用 jersey 库使用 Tomcat 和 Eclipse 制作一个 Web 服务 这是我的服务类别 package com gontuseries university import javax ws rs core Medi
  • 如何在 symfony 5 中将所有 Http 异常格式化为 json?

    在 symfony5 控制器中 我可以通过以下方式返回 json 响应 return this gt json key gt content 然而 当我抛出 HttpException 时 我会在开发和生产中看到默认的 html 错误页面
  • 存储过程执行需要时间

    我在 SQL Server 中面临一个非常奇怪的问题 我有一个存储过程 并且我正在从 C 代码执行该过程 该过程将返回一个数据表 数据集 我的问题是 C 代码 ADO NET 代码的执行过程花费了太多时间 大约 2 分钟 但是当我从 SQL
  • 在数据库中存储非常大的文件

    在数据库中存储大文件 大约 100 GB 是个好主意吗 目前我们考虑使用NBT格式或使用mysql postgresql数据库将数据保存在文件夹中 数据库旨在对大量小数据进行排序 过滤和执行计算 如果您只想拥有一个文件系统 例如 对聚合按上
  • 单击 CheckBox 中的 ClickableSpan 会更改其状态

    我的复选框中有一个 ImageSpan 和 ClickableSpan 用于在复选框文本末尾显示图标并处理单击它 但是单击它会更改复选框的选中状态 这是不需要的 当用户单击 ClickableSpan 时 如何防止更改复选框状态 只是我需要
  • pdfptable的不可见边框

    我正在使用 iText 库在 Java 中生成 pdf 文件 我正在 pdfptable 中写入数据 如何使表格边框不可见 PdfPTable 的边框元素由添加到表中的 PdfPCell 定义 每个单元格都有自己的样式 格式 这是 API
  • 如何使用yarn工作空间从monorepo中的nodejs项目构建docker镜像

    我们目前正在与我们的团队一起研究网站的 CI CD 我们最近还适应了 monorepo 结构 因为这使我们的依赖关系和概述变得更加容易 目前测试等已为 CI 做好准备 但我现在正在部署 我想创建所需包的 docker 镜像 我考虑过的事情
  • Xcode 4.5 背景图像 iPhone 4、4s、5

    我在 viewController m 中编写了后台代码 self view backgroundColor UIColor colorWithPatternImage UIImage imageNamed image png 我有不同图片
  • 结构化数组的掩码是否应该自行结构化?

    我正在调查numpy 问题 2972 https github com numpy numpy issues 2972以及几个相关的问题 事实证明 所有这些问题都与数组本身是结构化的情况有关 但它的掩码不是 In 38 R numpy ze
  • 更改一个 y 轴的范围 nvd3/d3

    我目前正在使用 multiChart 模型 并且有两个不同的 y 轴 我想更改两个轴 使它们从 0 开始 因为目前它们从最小的 y 数据点开始 我尝试过执行以下操作 chart yAxis1 tickFormat d3 format f d
  • 如何在 imageView 点击时全屏显示 imageView?

    我从 url 获取图像并将其显示在 imageView 上 该功能运行正常 但我希望当我单击该图像时 它必须是全屏的 那么如何实现这个功能呢 我知道我错过了一些东西 请帮我 附有屏幕截图 我也希望我的应用程序具有相同的功能 这是我的代码 我
  • Android CameraX 不显示任何内容

    我已经实现了一个新示例 这里是a link https codelabs developers google com codelabs camerax getting started 0它描述了来自 Google Codelabs 的新 C
  • Verilog 按位或 ("|") 单子

    我见过 Verilog 代码 其中使用了按位或运算符 目的是什么 例如 address 15 14 0 or address 15 14 io din ramrd 不能省略 吗在这些情况下 在这种情况下 它充当归约运算符 例如 4 b100
  • maven的依赖冲突

    如果我有一些库在不同版本中具有其他依赖项 例如以下示例 commons logging 1 0 4 jar 因与 1 1 1 冲突而省略 和 commons logging 1 1 1 jar 对此的最佳实践是什么 通知在相关依赖项中排除此
  • 按名称获取形状 ID

    有什么办法可以得到一个形状Id如果你知道它是Name 例如 如果我有这个 Dim myshape As Shape myshape Name 我可以得到它吗Id myshape Id getIdByName myshape Name 当然
  • Android Studio v 1.1 / 1.2 中的渲染问题

    当我添加android support v7 widget Toolbar或其他android support v7 widget 存在渲染问题 But 支持库已是最新 我正确地编译了依赖项 我可以将它们导入MainActivity jav
  • 我可以为第二个侧边栏使用多个

    我可以使用多个吗
  • 安装Python时出错

    击中后 make install 我收到以下错误 usr bin install cannot create regular file usr local bin python2 6 Permission denied make altbi
  • 如何更改每个 Gradle 构建类型的应用程序名称

    我正在尝试找出一种方法来更改 gradle 中每个构建类型的应用程序的应用程序名称 例如 我希望调试版本具有
  • Winforms RichTextBox 中的两列

    在 C 中 我需要能够在单个 RichTextBox 中至少给出 2 列的印象 出于我的目的 它可能看起来像这样 1 1 2 70 8 5 565 1000000 300000 700000 76 10 66 对于左栏中的每个 问题 都会有