我正在使用Winform作爲工具進行郵件合併。我提供了2個模板,一個用於商務信件,另一個用於備忘錄。對於字母,用戶通常鍵入字母的正文,而從用戶通過單擊「選擇收件人」選項創建的數據文件中選取其他信息。如何將屏幕上的指針固定到所需的位置?
我想限制我的用戶僅鍵入體,和指針必須被定位以下稱呼的第二行。指針不能從該位置向後移動,但當然可以向前移動。我該怎麼做呢?
如果我不清楚,我很抱歉不清楚。
我正在使用Winform作爲工具進行郵件合併。我提供了2個模板,一個用於商務信件,另一個用於備忘錄。對於字母,用戶通常鍵入字母的正文,而從用戶通過單擊「選擇收件人」選項創建的數據文件中選取其他信息。如何將屏幕上的指針固定到所需的位置?
我想限制我的用戶僅鍵入體,和指針必須被定位以下稱呼的第二行。指針不能從該位置向後移動,但當然可以向前移動。我該怎麼做呢?
如果我不清楚,我很抱歉不清楚。
如果你的文本是一個TextBox
或RichTextBox
您可以選擇控制,把光標與
// Set the cursor into the text box
bodyTextBox.Focus();
// Place the cursor at the desired position in the text
bodyTextBox.Select(start, 0);
你將不得不找出其中的第三行開始
const int indent = 30; // Desired indentation
// Place focus in this control
bodyTextBox.Focus();
// The following work only if we have at least 3 lines of text
if (bodyTextBox.Lines.Length >= 3) {
int start = bodyTextBox.Lines[0].Length + // Length of first line
bodyTextBox.Lines[1].Length + // Length of second line
4 + // 2 x 2 characters for two CR-LFs
Math.Min(indent, bodyTextBox.Lines[2].Length);
bodyTextBox.Select(start, 0);
}
我假設文字看起來像這樣
First line of text.<CR><LF> Second line of text.<CR><LF> <30 spaces for indent> ^desired position
In ord呃把光標放在正確的地方,我們需要從文本的開頭算起總字符數。由於您想將光標定位在第三行上,因此它的末尾加上兩個CR-LF(換行符)加上第三行開始處的30個字符的長度爲兩個第一行。如果第三行的長度小於30個字符,我們不能將光標放在那裏,因此我們將它放在儘可能遠的位置,即在該行的最後一個字符上,即Math.Min(indent, bodyTextBox.Lines[2].Length);
最後,我們將光標放在那裏與Select
。由於我們不想選擇文本,因此我們將選擇的長度定義爲零。
不,我的文本不在RichTextBox中,而textbixes是爲數據保留的(如收件人和發件人的地址,發件人的姓名和其他信息參數將放置在文本框中),這些數據將從數據文件如上所述。我想更改RTB文檔中的光標位置(文本框包含在RTB文檔中) – 2012-03-31 07:13:36
您沒有指定;然而,這不是問題,因爲'TextBox'和'RichTextBox'繼承了'TextBoxBase'的'Lines'屬性和'Select'方法以及'Control'的'Focus'方法。這意味着完全相同的解決方案也適用於'RichTextBox'。 – 2012-03-31 15:27:13
你可以解釋我這個代碼請 – 2012-04-01 06:14:39
請提供更多詳細信息如何在winform應用程序中使用這些模板?你也可以提供一些代碼嗎? http://whathaveyourtried.com – 2012-03-30 18:44:41