
TreeViewのノードを編集する際、例えば、ノード名の後ろ2文字は編集せない、といったことをやりたいと思っています。
TreeViewのノードにファイル名を表示させています。ノード名が変更されたら、その名前をローカルのファイル名に反映させるつもりです。しかし、ファイル名の後ろ2文字に特別な意味があり、この2文字をユーザに編集させない処理ができないか模索しています。
何かよい方法はないでしょうか?
開発環境
Visual Basic 2008
.NET FrameWord 2.0
Windows XP SP2
No.3ベストアンサー
- 回答日時:
文字列から最後の2文字を抜くのは BeginEditメソッド呼ぶときの方がいいようです
何かのアクション条件下でBeginEditを使う前に
sLast = objNode.Text.SubString( objNode.Text.Length - 2 )
objNode.Text = objNodeText.SubString(0, objNode.Text.Length -2 )
objNode.BeginEdit()
といった具合にします
# objNodeが編集するノード、変数sLastは最後を覚えておくClassレベルの変数です
編集が終わったときの処理 TreeView1_AfterLabelEdit イベントで
if e.Label isnot nothing then
TreeView1.LabelEdit = False
e.Node.EndEdit( False )
e.Node.Text = e.Label & sLast
' これが無いと ラベルの内容がイベント終了後にe.Labelに戻ってしまう
e.CancelEdit = True
else
' これが無いと編集モードにならない …
e.Node.BeginEdit()
end if
といった具合でよさそうです
BeforeLabelEdit側での処理は複数回呼ばれてしまうのでうまくないようです
ただ、編集中に他のノードを選択した際の動作を制御する必要があると思います
また、この実装の場合何も編集しなかった場合も動作がおかしくなるようです … 編集モードから抜けれない状況になります
回答ありがとうございます。
教えて頂いたコードを自分でも試してみました。
加えて、以下のURLにサンプルがありました。
http://69.10.233.10:80/KB/tree/CustomizedLabelEd …
両方をコードを元に、無事、期待通りの動作をさせる
コードが作成できました。
ありがとうございました。

No.2
- 回答日時:
ChangeイベントとかEditイベントとか起きないんでしたっけ?Text系の派生クラスなら起きそうな気がしますが。
そこでイベントをハンドルして表示するのを後ろ2文字以外にするとか、ちょっと使い勝手は悪くなりますが編集用のダイアログを出すとかするとできるかもしれません。あまりTreeViewは使ったことがないのですみません。
今ググったらBeforeLabelEditというイベントが起きますね(VB6以前なのかな。書き方がVB6っぽい)これをハンドルすればいいと思います。
BeforeLabelEditイベントが発生したときに、TreeViewに2文字抜いた文字列が表示されるよう、試しています。ですが、まだ、うまくいきません。
ちなみに、以下の方法で駄目でした。もう少し試してみます。
//Loadイベントでノード"test"を作成
//BeforeLabelEditイベントプロシージャの中で、
//以下のコードを実行
Dim strTemp As String = ""
Dim intCnt As Integer = 0
mstrTemp = TreeView1.Nodes(0).Text
intCnt = mstrTemp.Length
For i As Integer = 0 To intCnt - 3
strTemp += mstrTemp.Chars(i) //strTempには"te"が保存される
Next
TreeView1.Nodes(0).Text = strTemp //ここで入力すればTreeView上
//では"te"と表示されると
//思ったが駄目だった
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Word(ワード) PCで作ったwordをスマホで編集しようとすると「このファイルは読み取り専用です。」と表示される。 3 2023/05/30 14:51
- 画像編集・動画編集・音楽編集 inkscapeで作成した図の保存の仕方とその保存したファイルの編集の仕方 1 2022/09/22 09:33
- Excel(エクセル) Excelファイルをダウロードして編集した後、自身のパソコンに保存する際 2 2022/12/21 17:05
- その他(プログラミング・Web制作) テキストエディタで複数行にわたる文字列の行頭に番号を振る方法 4 2023/03/11 12:57
- Evernote Evernote(エバーノート)の文字化け 1 2022/04/05 19:30
- Word(ワード) officeの自動保存について教えてください 2 2023/06/18 09:11
- PDF ワードで作った文書のPDF化 5 2023/04/10 16:56
- PDF abode acrobat pro dc の文字編集教えてください 1 2022/09/15 09:58
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Excel(エクセル) csvファイルをExcel形式で読み込むには 2 2023/07/03 13:09
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
TreeViewコントロールについて
-
ルート要素ノードが2個ある場合?
-
CPUの考え方を教えてください ...
-
TreeVIewのノード名を編集する...
-
XML::LibXMLのfindnodes()で、...
-
各ノードの行数取得
-
ツリーでのアイコンの設定
-
ノードとは
-
TreeViewのノードの編集結果が...
-
TreeViewに重複する値をセット
-
2分探索木の高さを求めるプロ...
-
【C#】TreeViewがクリックされ...
-
SNMP リンクダウンとノードダ...
-
複数のマックPCによる数値計算...
-
C# TreeView 効率良いノード追...
-
探索二分木をバランス化する。
-
XML文書の指定した属性値を持つ...
-
vbsのDOMDocumentで要素のText...
-
同じタグ名の項目取得
-
ツリービューの使い方が・・・
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CPUの考え方を教えてください ...
-
ルート要素ノードが2個ある場合?
-
SNMP リンクダウンとノードダ...
-
あるノードリストに、特定の名...
-
同じタグ名の項目取得
-
C#でTreeViewのCheckBoxのサイ...
-
TreeView の初期表示について
-
昔Winnyってありましたけど、あ...
-
ノードとは
-
複数のマックPCによる数値計算...
-
C# TreeView 効率良いノード追...
-
TreeViewで複数ノードの選択は...
-
vbsのDOMDocumentで要素のText...
-
ツリービューのノードをダブル...
-
TreeViewに重複する値をセット
-
ToolStripMenuItemの選択(VB)
-
各ノードの行数取得
-
VB2005 TreeViewの任意ノード選択
-
TreeViewのノードの編集結果が...
-
TreeVIewのノード名を編集する...
おすすめ情報