【问题标题】:Any Characters - Masked Text Box [duplicate]任何字符 - 蒙面文本框 [重复]
【发布时间】:2014-01-05 16:20:42
【问题描述】:

我正在使用 Visual Studio 2012 用 C# 编写一个应用程序,我需要使用 MaskedTextBox 格式化一些输入文本。用户将输入文本框的文件夹路径,但由于文件夹路径是相对于另一个路径,我需要它以“.\”开头,但我不在乎路径有多长。

现在,我已将框的掩码设置为 \.\\CCCCCCCCCCCCCCCCCC。这很好用,除了当用户单击框时,它会将光标放在他们单击的位置而不是框的开头。

有没有办法将掩码设置为仍然放在“.\”中,但不对后面的字符设置任何限制?

或者有什么方法可以忽略吗?

编辑:更多信息

所以我尝试了一些推荐的东西,但它们似乎不起作用。链接here 的答案效果不佳。虽然我可以将它设置为在单击框时转到该选择点,但每次您需要单击框时它都会转到那里。因此,您无法选择整个框或编辑您键入的部分内容,这对可用性更不利。

我也尝试了 Adelmo 建议的方法。我做了一个这样的偶数处理程序:

public Form1()
{
    InitializeComponent();
    refreshList();
    this.textBoxPrintFolder.GotFocus += new EventHandler(textBoxPrintFolder_GotFocus);

}
private void textBoxPrintFolder_GotFocus(object sender, EventArgs e)
{
    this.textBoxPrintFolder.Select(2, 0);
}

这在选择框时有效,但显然单击框不会进入 GotFocus 事件。

我也尝试过使用 MouseEnter 事件。虽然它确实有效,但它需要几秒钟才能移动。不理想。

任何帮助将不胜感激。

【问题讨论】:

  • 这并不能真正满足我的需要,而且几乎使它不那么可用。现在,如果您尝试返回或选择任何内容,情况会变得更糟。

标签: c# visual-studio visual-studio-2012 maskedtextbox


【解决方案1】:

也许使用 onFocus 事件:

您可以通过 TextBox.SelectionStart 和 TextBox.SelectionLength 属性控制光标位置(和选择)。

如果要将光标移动到第 3 个字符集 SelectionStart = 2 和 SelectionLength = 0 之前的示例。

http://social.msdn.microsoft.com/Forums/en-US/04362a62-8cbf-4d86-a1bc-2aba8e4978ca/cursor-position-in-textbox

希望对你有帮助

【讨论】:

  • 不幸的是,这也不能完全满足我的需要。每当我点击框时,我都可以将其设置为工作,但当我单击它时则不行。而且我不能每次点击它都会发生这种情况。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-28
相关资源
最近更新 更多