テキストボックスの現在行、列数を取得するには?


みけ  2011-10-14 23:44:04  No: 147374  IP: 192.*.*.*

環境 : Windows7(64bit) / Visual Studio2010(Pro) or 2005(Std)

自作のメモ帳アプリケーションを作っている所ですが、本家の
メモ帳に実装されている現在のカレットのある位置の行と列数を
どぼんの.NET Tipsにあるものを参考にして実装しようとしましたが
文字の全選択などをすると列数が負の値(実際ありえない)を示して
おかしな表示になるのですがどうすれば本家と同じような表示に
出来るのでしょうか。

編集 削除
れお先生  2011-10-17 21:06:02  No: 147375  IP: 192.*.*.*

んあ?

なんで、そんな簡単な質問をしてるのに中級者なんですか?謎。

オレがぼちぼち11/3に去るよ。笑

編集 削除
みけ  2011-10-18 08:22:14  No: 147376  IP: 192.*.*.*

れお先生(翔泳ミキオ、ぼく、オレ他の名前の荒らし)へ
あなたに答えをもらいたくて書いている訳ではないので。

ちなみにVBで書いてもらったのをさらにC#に変換する作業が
待っていますので。(C#掲示板が消えたのでVBで聞いてC#に
変換する話なので)

編集 削除
YuO  2011-10-20 02:21:16  No: 147377  IP: 192.*.*.*

どう計算をしたのでしょうか。

in VB
' assume: Option Infer On
Dim row = TargetText.GetLineFromCharIndex(TargetText.SelectionStart)
Dim column = TargetText.SelectionStart - TargetText.GetFirstCharIndexFromLine(row)

in C#
var row = TargetText.GetLineFromCharIndex(TargetText.SelectionStart);
var column = TargetText.SelectionStart - TargetText.GetFirstCharIndexFromLine(row);
と,必要な単純にメソッドを呼び出してちょっと計算するだけなのですが……。

References)
MSDN: TextBoxBase.GetLineFromCharIndex メソッド (System.Windows.Forms)
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.textboxbase.getlinefromcharindex.aspx

MSDN: TextBoxBase.GetFirstCharIndexFromLine メソッド (System.Windows.Forms)
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.textboxbase.getfirstcharindexfromline.aspx

編集 削除