我有一个应用程序,用户需要选择某一行来开始解析操作。我的想法是有一个简单的滚动列表,用户可以在其中选择他们想要的行,当单击它时,列表将关闭并关闭程序。
我想自定义代码控件,使其看起来尽可能像一个普通的文本框,但突出显示用户当前正在选择的行(并在单击时返回行号)。
当然我不只是想要这个代码,这是我需要学习做的事情;但是有什么好的资源可以帮助我创建这个新控件吗?尤其是需要的垂直滚动条(文本可能长达数百行)。
谢谢
我有一个应用程序,用户需要选择某一行来开始解析操作。我的想法是有一个简单的滚动列表,用户可以在其中选择他们想要的行,当单击它时,列表将关闭并关闭程序。
我想自定义代码控件,使其看起来尽可能像一个普通的文本框,但突出显示用户当前正在选择的行(并在单击时返回行号)。
当然我不只是想要这个代码,这是我需要学习做的事情;但是有什么好的资源可以帮助我创建这个新控件吗?尤其是需要的垂直滚动条(文本可能长达数百行)。
谢谢
与其创建您自己的自定义控件,不如直接使用列表框来存储您的潜在用户想要选择的所有信息。您正在寻找的所有功能都已内置在控件中。如果我遗漏了什么,请进一步解释。
您可以(理论上)通过在 SelectionStart (插入符号位置)上拆分来重用任何 *TextBox 控件,这将为您提供第一个 CRLF 的索引(第一个子字符串中的 LastIndexOf)并通过将选择长度设置到下一个来选择整行(IndexOf在第二个子字符串中)。但如前所述——标准的 ListBox 是可行的。
这是静态文本区域还是基于某些用户输入或复制/粘贴操作?我问是因为您可能会遇到一些潜在的包装问题,并且您仍然必须处理 < IE8 无法正确处理 SelectionStart。
虽然不完全优雅,但您可以根据换行符拆分文本并使用一系列 span/div 标签作为内容或(不寒而栗)一个表格,您可以在其中使用 jQuery 抓取最近的 DOM 元素以获得特定的行偏移量. 我认为 textarea 不会成为您想要做的事情的最佳方法,因为它对于那种块级别的选择确实不是最佳的。