2012-03-30 103 views
-1

我正在使用Winform作爲工具進行郵件合併。我提供了2個模板,一個用於商務信件,另一個用於備忘錄。對於字母,用戶通常鍵入字母的正文,而從用戶通過單擊「選擇收件人」選項創建的數據文件中選取其他信息。如何將屏幕上的指針固定到所需的位置?

我想限制我的用戶僅鍵入體,和指針必須被定位以下稱呼的第二行。指針不能從該位置向後移動,但當然可以向前移動。我該怎麼做呢?

如果我不清楚,我很抱歉不清楚。

+0

請提供更多詳細信息如何在winform應用程序中使用這些模板?你也可以提供一些代碼嗎? http://whathaveyourtried.com – 2012-03-30 18:44:41

回答

0

如果你的文本是一個TextBoxRichTextBox您可以選擇控制,把光標與

// 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。由於我們不想選擇文本,因此我們將選擇的長度定義爲零。

+0

不,我的文本不在RichTextBox中,而textbixes是爲數據保留的(如收件人和發件人的地址,發件人的姓名和其他信息參數將放置在文本框中),這些數據將從數據文件如上所述。我想更改RTB文檔中的光標位置(文本框包含在RTB文檔中) – 2012-03-31 07:13:36

+0

您沒有指定;然而,這不是問題,因爲'TextBox'和'RichTextBox'繼承了'TextBoxBase'的'Lines'屬性和'Select'方法以及'Control'的'Focus'方法。這意味着完全相同的解決方案也適用於'RichTextBox'。 – 2012-03-31 15:27:13

+0

你可以解釋我這個代碼請 – 2012-04-01 06:14:39

相關問題