我生成如下文本框:
for (byte i = 0; i < 4; ++i)
for (byte j = 0; j < 4; ++j)
Letterbox[i, j] = new TextBox();
Letterbox[i, j].Style = style; //MaxLength=1 among other things
...
我希望像这样粘贴字符串:
T
Ę
Ś
T
将导致前4个文本框连续包含“T”,“Ę”,“Ś”和“T”。 我怎样才能做到这一点?
澄清(编辑):
我希望能够在应用程序运行时以此格式粘贴任何字符串(letter,enter,letter,enter ...),而不是硬编码
答案 0 :(得分:1)
您可以使用AddPasteHandler
像这样:DataObject.AddPastingHandler(tb, OnPaste);
OnPaste
方法实现:
private void OnPaste(object sender, DataObjectPastingEventArgs e)
{
var isText = e.SourceDataObject.GetDataPresent(DataFormats.UnicodeText, true);
if (!isText) return;
var text = e.SourceDataObject.GetData(DataFormats.UnicodeText) as string;
HandlePaste(text);
e.Handled = true;
}
private void HandlePaste(string text)
{
var letters = text.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
if (letters.Length == 4)
{
for (var i = 0; i < 4; i++)
{
Letterbox[0, i].Text = letters[i];
}
}
}
tb是我窗口上的其他TextBox
,您可以使用符合您要求的任何内容。
在HandlePaste
粘贴的字符串由换行符分割,当它适合4个文本框时,每个文本框的文本都设置为适当的字母。你可以在这里添加一些更多的验证,例如检查每个字符串是否只有一个字符串。