とりあえずVB2005で作っています。(あとでC#あたりに切り替えも考えていますが)
NotifyIcon、ContextMenuStrip、ToolStripMenuItemあたりを利用して
システムトレイ周りを操作できるということは分かりました。
それを利用したい場合のフォームが複数存在した場合、毎度それを
貼り付けて作ってあげなきゃいけなそうで面倒という理由より、
既にそれをサポートしたFormをベースとするユーザーコントロールを
作ろうと思い立ちました。
そこでまず、NotifyIconをサポートさせようと考え、実際にはこんな感じです。
Property SystemTrayUsable() As Boolean - システムトレイの利用をするかどうか
ReadOnly Property Notify() As NotifyIcon - NotifyIconのプロパティ
デザイン上でシステムトレイを利用すると設定された場合に限り、Notify()より
NotifyIconオブジェクトを取得できて、NotifyIconの各種プロパティを
設定できる、ということを想定しています。
が、これを実現させようとすると、デザイン上では設定できるものの
Form1.Designer.vbの方ではNotifyIconのプロパティ設定に対するコードが
記載されない為、ビルドを行うと初期化されてしまいます。
(つまり、デザイン上で設定が出来るだけで、ビルドを行うとデザイン上で
設定した内容すら残らない)
多分、ビルドした瞬間にNotifyIconのインスタンスが消える関係で
そうなってしまうんだと思うんですが。
Form1.Designer.vbに直接
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(Form1))
Me.Notify.Icon = CType(resources.GetObject("NotifyIcon1.Icon"), System.Drawing.Icon)
Me.Notify.Text = "NotifyIcon1"
Me.Notify.Visible = True
といったコードを打ち込むと動作するので、何か方法があると思うのですが解決できません。
NotifyIconで指定できるプロパティを逐一全部自作して、内部的にNotifyIconのプロパティを操作してあげる、というのも手なのでしょうが、
NotifyIconの全てのプロパティ、メソッドを自作するというのはとても現実的では
ないので、八方塞がりになってしまいました。
どうするとデザイン上で設定したNotifyIconのプロパティが保持されるのでしょうか?
No.4ベストアンサー
- 回答日時:
すいません#3では、できないですよね、
最初からインスタンスを生成しておけるならば、同時に設定を行うという方法で対処できないでしょうか?
http://homepage1.nifty.com/rucio/main/dotnet/sho …
No.5
- 回答日時:
色々な対応方法を教えていただき、ありがとうございます。
私も何か一辺倒な作り方に固執していたような感があります。
教えていただいた方法を参考に、実現することが出来ました。
No.2
- 回答日時:
すいません質問の意図を正しく読み取れていませんでした。
コントロールの動的追加ができれば解決するのではないでしょうか?
参考URL:http://dobon.net/vb/dotnet/control/addcontrol.html
この回答への補足
実質的にコントロールの動的追加になるのかもしれませんが、
継承されたフォームをデザイン時に、No1の補足のような
コードが動作し、プロパティウィンドウにてシステムトレイを
利用すると設定された時に限りシステムトレイに関するプロパティが
変更可能になるということをしたいです。
で、それが仮に出来たとしても、現時点ではDesigner.vb側へ
システムトレイに関するプロパティのコードが反映されない為、
ビルドをすると、システムトレイに関するプロパティが全部初期状態に
戻ってしまうのです。
なんか、ファイル添付とか出来ればわかり易いんですけどね・・・。
文字だけだとなかなか・・・。
No.1
- 回答日時:
クラス内にPublic宣言でNew Windows.Forms.NotifyIconを宣言しておけば、クラス名.NotifyIco
nの名前.プロパティとできるのではないですか?この回答への補足
すみません、イメージが付きません・・・。
現在、Form1として以下のような感じです。
Private mSystemTrayUsable As Boolean = False
Private mNotify As NotifyIcon = Nothing
<Browsable(True), DefaultValue(False), Category("System Tray Support Property"), Description("システムトレイの利用を示します。")> _
Public Property SystemTrayUsable() As Boolean
Get
Return mSystemTray
End Get
Set(ByVal value As Boolean)
mSystemTray = value
If value Then
mNotify = New NotifyIcon()
Else
mNotify = Nothing
End If
End Set
End Property
<Browsable(True), Category("System Tray Support Property"), Description("システムトレイを操作します。")> _
Public ReadOnly Property Notify() As NotifyIcon
Get
If mNotify Is Nothing Then
Return Nothing
End If
Return mNotify
End Get
End Property
これを継承元としたForm2のプロパティで、SystemTrayUsableプロパティを
Trueに設定すると初めてNotifyプロパティが操作できる、というイメージ
です。
(逆にFalseにすると設定が一切できない)
Notifyプロパティ自体はReadOnlyですが、そこから取得されるオブジェクト
の各プロパティ(BalloonTipTitleやIconなど)は設定もできる為、
継承先のForm2でそれらをいじったらForm2.Designer.vbでそれらが
質問にあるように書かれればいいんですけど・・・。
どこをどのようにすれば良いでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(ソフトウェア) Figma 1 2023/06/23 14:22
- Excel(エクセル) エクセル バーコード作成で他のシートを参照するには? 2 2023/05/03 16:57
- その他(プログラミング・Web制作) google formsを使ったタスク依頼フォーム作成におけるご相談 1 2023/06/22 15:55
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 6 2022/06/08 12:55
- その他(プログラミング・Web制作) プログラムの起動、利用について、使用期間を設定する方法 3 2023/08/06 21:03
- Visual Basic(VBA) outlook マクロが終了しません。 1 2022/09/02 11:14
- Visual Basic(VBA) エクセルのマクロについて教えてください 物件ごとのフォルダを作成してます そのフォルダ内にサブフォル 2 2023/07/02 17:58
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/08 11:02
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/05/26 17:19
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テキストボックス(VBA)でEnter...
-
MFCでbitmapを背景にしてstatic...
-
ユーザーフォームに日付を表示...
-
DataGridViewで行の展開みたい...
-
ADOのCursorLocationプロパティ
-
VB.NETで縦書表示をしたいので...
-
MSFlexGrid
-
テキストボックスがセルと連動...
-
checkbox付きListViewで デフ...
-
VB6でLabelの最前面にText Box...
-
Wordテキストコントロールが未...
-
カスタムコントロールInputMan...
-
Enabled=Falseのテキストボック...
-
チェックボックスの文字色の変え方
-
ユーザーコントロール内にNotif...
-
エクセル VBA ユーザーフォーム...
-
VC++のエディットボックスの非表示
-
C# アプリ終了時に設定を記憶...
-
ACCESS VBA でのテキスト表示
-
デザインモードを解除すると消...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストボックス(VBA)でEnter...
-
エクセルの画像にツールチップ...
-
ADOのCursorLocationプロパティ
-
Wordテキストコントロールが未...
-
ACCESS2010 ActiveXコントロー...
-
VBからエクセルのテキストボ...
-
C# TEXTが空白であるLABELは何...
-
VB.NETで縦書表示をしたいので...
-
チェックボックスの文字色の変え方
-
DataGridViewで行の展開みたい...
-
ユーザーフォームに日付を表示...
-
コンボボックスの高さを変更し...
-
C# アプリ終了時に設定を記憶...
-
デザインモードを解除すると消...
-
VB6でLabelの最前面にText Box...
-
Enabled=Falseのテキストボック...
-
MSFlexGrid
-
PictureBoxの背景色変更(VB.NET)
-
checkbox付きListViewで デフ...
-
エクセル入力規制リスト行数
おすすめ情報