質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Windows Forms

Windows Forms(WinForms)はMicrosoft .NET フレームワークに含まれる視覚的なアプリケーションのプログラミングインターフェイス(API)です。WinFormsは管理されているコードの既存のWindowsのAPIをラップすることで元のMicrosoft Windowsのインターフェイスのエレメントにアクセスすることができます。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

1回答

4038閲覧

自作コントロールの初期化の手法について

Houtou

総合スコア9

Windows Forms

Windows Forms(WinForms)はMicrosoft .NET フレームワークに含まれる視覚的なアプリケーションのプログラミングインターフェイス(API)です。WinFormsは管理されているコードの既存のWindowsのAPIをラップすることで元のMicrosoft Windowsのインターフェイスのエレメントにアクセスすることができます。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2020/01/15 04:21

ほうとうです。

表題の件についてアドバイスを頂けますでしょうか?
VS2019 CommunityでTreeViewを継承したコントロール(CustomFileViewerコントロール)を作成しようと思っています。

要件としてはWindowsのエクスプローラーのようにツリー構造を通じてでファイルにアクセスする仕組みを想定していますがコントロールに対して初期値をどう与えるかで躓いております。

具体的にはCustomFileViewerコントロールを張り付けたフォームを初回表示した時に初期表示したいルートディレクトリを与えたいのですがどのようにして与えて上げれば良いのかアイデアが浮かびません。

そもそもユーザーコントロールの初期化のタイミングが1.VS2019のデザイナでフォーム上に配置した時に初期化されるのか2.アプリケーションでCustomFileViewerコントロールを配置したフォームがNewされた後で初期化されるのかが良くわかっていないので勉強不足の指摘は当然なのですがフォームをNewしてShowする事に慣れ切ってしまいフォームに乗っかっている部品については全く考えが至っていませんでした。

もちろんCustomFileViewerコントロールに

VB.NET

1Sub DrawFileTree(startUpDirectory as String) 2 'startUpDirectoryを基準にしたツリー構造をコントロールに描画する 3End Sub

…と言う処理を書くことも可能ですが何となくスマートじゃないような気がして色々と模索しております。
ユーザーコントロール自体の初期化にそのような処理をするべきではないとか言う設計の考え方の面も含めてお助け頂けますでしょうか?

自分としては

VB.NET

1Dim frm As New Form1(startUpDirectory as String) 2frm.Show

…のように自作コントロールを載せたフォームに初期値を渡せばうまく動作するようになればと目論んでいます。

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

初期化のタイミングですが、

1.デザイナでフォーム上に配置した時
2.配置したフォームのインスタンスが作成された時
(InitializeComponentという関数がデザイナで自動生成され、その中でコントロールのインスタンスが作成される。コードで生成した場合もこちらに分類します)

の2通りとなります。
1はデザイナでコントロールを表示する為に、VisualStudioがインスタンスを生成する時で、
2は実際にアプリケーションが実行された場合になります。

また、初期化の方法ですが
StartUpDirectoryプロパティを作成し、フォームのコンストラクタで

VB.NET

1 Public Sub New() 2 3 ' この呼び出しはデザイナーで必要です。 4 InitializeComponent() 5 6 ' InitializeComponent() 呼び出しの後で初期化を追加します。 7 CustomFileViewer.StartUpDirectory = "C:\" 8 End Sub

みたいな形にするか、メソッドを作成し呼び出すかという形になるかと思います。

提示されている

VBNET

1Dim frm As New Form1(startUpDirectory as String) 2frm.Show

というのは、コントロールに情報を与える前の段階でどのように情報を受け渡しするかという部分なので適切なのかは判断できません。

投稿2020/01/15 05:38

YAmaGNZ

総合スコア10242

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問