1

私の VB.Net Winforms アプリは、階層データをツリーで編集し、データベースに保存できるようにするツールです。ツリービュー コントロールを使用しています。

コンテンツは、他のドキュメントからツリー ノードにドラッグ アンド ドロップするか、ノードを直接編集できます。

データベース フィールドを直接編集し、少しのコンテンツ (1000 文字以上!) を入力すると、ツリービューに問題なく表示されますが、ドラッグ ドロップすると、データが 259 文字で切り捨てられます。直接編集する場合、最大編集「ウィンドウ」も 259 文字です。

259 というのは非常に奇妙な数字のように思えるので、疑問に思っています。このサイズはどこから来ているのでしょうか。

4

1 に答える 1

2

別のアプローチを取ることをお勧めします。いずれにせよ、TreeNode でドキュメントの 10000 文字またはすべての文字をユーザーに表示したくないので、ドキュメントとそのタイトルを格納する Name や Content などのプロパティを持つカスタム データ ストレージ クラスを作成します。コンテンツを Content プロパティに追加し、タイトルまたは意味のあるものを Name プロパティに追加してから、オブジェクトを TreeNode オブジェクトの Tag プロパティに追加します。

Dim mynode As New TreeNode
Dim SomeBigCustomObject as New MyContentStorageObject(name,content)
mynode.Text = SomeBigCustomObject.Name
mynode.Tag = SomeBigCustomObject
TreeView1.Nodes.Add(mynode)

次のように、ノードが選択されたときに (AfterSelect イベントを使用して) オブジェクトを取得できます。

dim ContentStorageObject As MyContentStorageObject = CType(e.Node.Tag,   MyContentStorageObject)
dim content as string = ContentStorageObject.Content

テキストを編集する必要がある場合は、エディター ダイアログをポップアップするか、Content に保存されているデータをフォームのテキスト ボックスに送信して編集します。ユーザーは、ツリービュー ノード エディターにすべてを入力する必要がないことに感謝するでしょう。

これは非常に簡単で汚い説明ですが、本質は「.Tag プロパティを使用する」ことです。幸運を。

于 2008-11-12T04:55:40.827 に答える