- 題名: いろいろわからないこと
- URL: http://pocketsoft.zive.net
- 日時: 2003/12/05 22:32:08
- ID: 1693
- この記事の返信元:
- (なし)
- この記事への返信:
- [1695] Re[1]: いろいろわからないこと2003/12/06 3:51:52
- ツリーを表示
こんばんは、Nezumiさん。ピラルクです。
> なぜかEXEファイルのある場所のファイルが出てしまいます。
> それ以外の場所だと正常に表示されるのですが、これはどう
> したら直るでしょうか?
.NET Tipsというのはコレでしょうか?
▼「ファイルを開く」ダイアログボックスを表示する
http://dobon.net/vb/dotnet/form/openfiledialog.html
私の方ではちゃんとルートが出ますが。。。
ofd.InitialDirectory = "C"
とかしてません?
> もうひとつ、2つのForm間でひとつのFormからもうひとつの
> Form内のイベントを発生させることはできないのでしょうか?
VB6以前では、Form1は(暗黙の)インスタンスでもあり、
かつクラスでもあるという特殊な識別子だったので、
この辺の経験が逆に災いし、VB.NETではForm間連携に
まつわる疑問を投げかける方が多いように感じています。
基本的には.NETで開発するならオブジェクト指向言語と
いうものを理解するように努めるのが必修ですが、手軽
なGUIツールをサクッと作るのが目的なので、とりあえず
今はそこを避けて通りたいというような場合には、以下
のような手法が効果的ではないかと思います。
Public Class Form1
Inherits System.Windows.Forms.Form
'VB6ライクな暗黙のインスタンスへのアクセッサを作る
'(Sub Main()から起動の場合はApplication.Run(Form1.GetInstance))
Private Shared s_Me As Form1 = Nothing
Friend Shared ReadOnly Property GetInstance()
Get
If s_Me Is Nothing Then
Return New Form1()
Else
Return s_Me
End If
End Get
End Property
'NewをPrivateにして一応シングルトンにする
Private Sub New()
……
'暗黙のインスタンスに設定
Form1.s_Me = Me
End Sub
Private Sub Form1_Closed( _
ByVal sender As Object, ByVal e As System.EventArgs) _
Handles MyBase.Closed
'暗黙のインスタンスを開放
Form1.s_Me = Nothing
End Sub
'Button1_ClickのアクセシビリティをPublicにする
Public Sub Button1_Click( _
ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles Button1.Click
MessageBox.Show("Form1.Button1_Click called !!")
End Sub
これで、Form2からは、
Private Sub Button1_Click( _
ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles Button1.Click
Form1.GetInstance.Button1_Click(sender, e)
End Sub
というように呼び出せます。
> Dim frm as New Form1
> frm.Button1_Click()
このようなForm連携は、Formの既存のインスタンス或いは
デリゲートを何らかの手段で相手側に渡す必要があります。
上記コードでは、新たな別のインスタンスを生成している
のでNGです。
> それと.NETでつくったアプリをなんとか軽くすることは
> できないのでしょうか?
XPで196Mなら仕方ないかも。
▼ネイティブ イメージ ジェネレータ (Ngen.exe)
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cptools/html/cpgrfnativeimagegeneratorngenexe.asp
は、起動時間短縮を狙った(あまり期待できない)ツール(^^;
ですが、ロースペックならメモリリソース面でも効果が
あるかもしれないので、一度試されてみては?
分類:[.NET]
はじめましてNezumiと申します。初めての投稿ですがよろしくお願いします
.NETプログラミングを始めてからこのページを色々参考にさせていただきました。ありがとうございます
ところで質問なのですが、このページの.NET Tipsのファイル操作を参考にしてファイルの一覧を呼び出そうとして、ドライぶのルートを選択すると、なぜかEXEファイルのある場所のファイルが出てしまいます。それ以外の場所だと正常に表示されるのですが、これはどうしたら直るでしょうか?
もうひとつ、2つのForm間でひとつのFormからもうひとつのForm内のイベントを発生させることはできないのでしょうか?
Dim frm as New Form1
frm.Button1_Click()
などのようにするとエラーは出ないのですが実効されませんでした
またcall frm.Button1_Click()でも無理でした。何か良い方法があれば教えてください。
それと.NETでつくったアプリをなんとか軽くすることはできないのでしょうか?
私の環境ではメモリを45MBも使ってしまい、メモリ不足でIEのメニューの表示が変になったりしてしまいます(RAM192Mはキツイですねぇ(笑))
以上 どなたかわかる方いましたらぜひ教えてください。
よろしくお願いします。