VB.NETで簡単なテキストエディタを作っています。
テキストボックスをフォームに張り付けることにより、画面表示及び入力は出来るようになりました。それで、ほかのエディタ(秀丸など)のように、カーソルが、ある行にきたとき、その行番号を画面の下のほうに表示しようと考えています。そのため、まず、カーソルが位置づけられている行の行番号を取得したいのですが、その方法がわかりません。テキストボックスのプロパティ、メソッドを探したのですが、そのようなものは見あたりませんでした。どなたかご存じの方おりましたら、ご教授ください。
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ランキング
-
VBA:小数点以下の数字を取得で...
-
VB.NETで DataRow()を利用して...
-
count(*)で取得した値をJAVAの...
-
VBAでActiveDirectoryのユーザ...
-
データ数をカウントしたいのですが
-
PostgresSQL JDBC で Select結...
-
アクセスしてきたコンピュータ...
-
.NETで現在時刻を常に動作させ...
-
ListView 項目の選択/選択解除...
-
Yahoo! JAPANのID取得について
-
Flexgridで選択行の列の値を取...
-
Excel VBA でログインしてい...
-
VBA Shapesの座標からセル位置...
-
モニタの物理解像度を得る(Win3...
-
ListViewで複数選択された項目...
-
eclipse java クライアントの...
-
エクセルVBAで複数選択できるよ...
-
like演算子内に変数って使えな...
-
JTableクリック時の処理
-
バージョンナンバーの取得
マンスリーランキングこのカテゴリの人気マンスリー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時間後...
-
コンボボックス表示文字列を取...
-
コンボボックスの表示は最大何行?
おすすめ情報