我也剛剛開始這本書,有完全相同雖然你已包括長相走得更遠比我這裏的代碼相同的問題。 '下標超出範圍'的出現有兩個原因,首先是Ron解釋他正在測試,因此在他寫CursorLine()函數之前返回3的硬編碼值,這意味着我認爲至少有4個?正如你所說的文本行需要被粘貼,或者也可以在運行之前將文本設置爲這個值,正如你所說的那樣,他們需要回車讓txtbox.Lines返回一個字符串數組。 即使在CursorLine()已經實現後,第二個原因也會發生,但只有當文本框爲空時纔會發生,因爲txtbox.Lines返回字符串[0],但我認爲Ron正在實現一個'用戶故事',它表示當輸入文本時和用戶按下輸入,所以不知道他是否稍後修復,但可能會發現!
作者的確表示他們正在學習C#,並且會展示Wart的發展和全部,這是我選擇研究這本書的原因之一,因爲我認爲它鼓勵我開發項目。在查看他的解決方案之前,我也嘗試先做代碼,看看我是否以同樣的方式思考,但也許我知道C#比我自信的好一點,或者我完全是垃圾,但我已經注意到一些事情,首先他說Overlading OnKeyDown()不起作用,但我認爲他一定有困惑並試圖在Form中做,而不是派生自TextBox並在那裏重寫。 這是閱讀「用戶故事」時,我的代碼:
int curPos = txtbox.SelectionStart;
string Wrd = Environment.NewLine + "<P></P>" + Environment.NewLine;
txtbox.SelectedText = Wrd;
int pl = Environment.NewLine.Length + 3; // "<P>" length is 3
// Put text cursor inbetween <P> tags
txtbox.SelectionStart = curPos + pl;
它的工作原理不同,以羅恩的代碼,不過這只是我的「用戶故事」的解釋,不知道如果選擇或閹文本應該如何採取行動以分割線,如果文本光標在中間等
另外在極限編程探險「我的故事」在C#
txtbox.GetLineFromCharIndex(txtbox.SelectionStart)
得到光標線位置,如果沒有回車或調整大小並不重要, 就我所知道的,我做了小測試有:
txtbox.GetLineFromCharIndex(txtbox.TextLength)
返回行的總金額,如果調整文本框將有所不同。
使用C#我總是在尋找已經存在的解決方案,人們可能會爲此提供我,但我認爲MS已經創建了一個偉大的組件,它可以完成您期望它們所做的事情,每次創造輪子。 雖然就像我說的是在本書的早期階段,也許這些簡單的解決方案不夠可擴展,也許羅恩考慮到了這一點,儘管他提到只是讓它工作,然後擔心後來更多的是XP方式。
沃倫。
謝謝。我想到了這一點,但我想確保在聯繫作者之前,我不會看起來比我真正的笨蛋! ;-) – EoRaptor013 2008-11-21 22:07:27