VB.NETで簡単なテキストエディタを作っています。
テキストボックスをフォームに張り付けることにより、画面表示及び入力は出来るようになりました。それで、ほかのエディタ(秀丸など)のように、カーソルが、ある行にきたとき、その行番号を画面の下のほうに表示しようと考えています。そのため、まず、カーソルが位置づけられている行の行番号を取得したいのですが、その方法がわかりません。テキストボックスのプロパティ、メソッドを探したのですが、そのようなものは見あたりませんでした。どなたかご存じの方おりましたら、ご教授ください。
No.1
- 回答日時:
表示文字列の先頭から、現在のカーソル位置までの改行の数を数えれば行数になりません?
No.2ベストアンサー
- 回答日時:
.NETではどうかわかりませんが、VB6.0でそのような関数があります。
簡単に解説でも。Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Long) As Long
Const EM_LINEFROMCHAR = &HC9 'カーソルがある列数(縦)を取得
Const EM_GETLINECOUNT = &HBA 'テキストボックスでの最大列数(縦)を取得する
Const EM_LINEINDEX = &HBB 'カーソルがある行(横)の位置を取得する
Const EM_LINELENGTH = &HC1 'カーソルがある行(横)の最大行数を取得する
Const EM_GETSEL = &HB0 'カーソルが何行目(横)にあるかを取得する
Private Sub GetInfomation()
Dim Line as Long, Midle as Long 'Lineには列数を、Midleには何行目かを格納します。
Line = SendMessage(Text1.hwnd, EM_LINEFROMCHAR, -1, 0) + 1
Midle = SendMessage(Text1.hwnd, EM_GETSEL, 0, 0)
Midle = Midle \ 65536 - Top + 1
End Sub
ただし、MidleにはLenB関数のように、全角なら2、半角なら1と計算されますので、Midle=文字数とは限りません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) capeofdragonと申します。 Access2016を使っております。 あるフォームがあり、テ 2 2022/09/09 13:18
- Visual Basic(VBA) 検索のユーザーフォームの表示について 1 2023/03/27 23:31
- Visual Basic(VBA) ActiveReportのdetailをデータセットの自動バインドを使って帳票を出力しています。 1 2023/08/16 07:16
- Access(アクセス) Access IF文でテーブルに存在しない場合の処理について 2 2022/10/10 18:09
- Visual Basic(VBA) excel vba でユーザーフォーム入力ができない 2 2022/12/12 14:42
- Excel(エクセル) excelで検索した商品の画像(ネットワーク上の)を表示させたい。 3 2023/06/28 00:32
- iPhone(アイフォーン) アイホンについて。 Apple IDのパスワードを忘れてしまい、困っております。 可能性のあるパスワ 4 2022/04/26 15:39
- Access(アクセス) Access DTPickerの初期表示月を変えたい 1 2022/08/02 08:55
- IT・エンジニアリング ActiveReportのdetailをデータセットの自動バインドを使って帳票を出力しています。 1 2023/08/16 07:17
- その他(パソコン・スマホ・電化製品) ワードでテキストボックス内の文字を連動させない方法 2 2023/02/09 16:56
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB.NETで DataRow()を利用して...
-
VBA:小数点以下の数字を取得で...
-
データ数をカウントしたいのですが
-
count(*)で取得した値をJAVAの...
-
VBAでActiveDirectoryのユーザ...
-
Flexgridで選択行の列の値を取...
-
ListView 項目の選択/選択解除...
-
リストビュー:先頭行のアイテ...
-
時間を分に変換するプログラム
-
ドロップダウンリストの初期表...
-
like演算子内に変数って使えな...
-
EXCELのリストボックスを選択し...
-
getParameter と getAttribut...
-
asp.netでtextboxの値を取得
-
ListViewで複数選択された項目...
-
imgctl.dllを使って読み込んだ...
-
VB6.0のレジストリ情報取得方法
-
Google Apps Script で、Web上...
-
利用者側のMACアドレスを取得し...
-
.NETで現在時刻を常に動作させ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでActiveDirectoryのユーザ...
-
VB.NETで DataRow()を利用して...
-
VBA:小数点以下の数字を取得で...
-
ListView 項目の選択/選択解除...
-
like演算子内に変数って使えな...
-
count(*)で取得した値をJAVAの...
-
利用者側のMACアドレスを取得し...
-
データ数をカウントしたいのですが
-
JavaScriptでWindowsログオンID...
-
ListViewで複数選択された項目...
-
Flexgridで選択行の列の値を取...
-
エクセルVBAで複数選択できるよ...
-
VBA リストボックス複数選択か...
-
getParameter と getAttribut...
-
Excel VBA でログインしてい...
-
VBScriptで数値にコンマを付け...
-
Spreadの選択行の取得について
-
コンボボックスの表示は最大何行?
-
コンボボックス表示文字列を取...
-
VB .netにて現在時刻+1時間後...
おすすめ情報