tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルフォーム上をダブルクリック・・・
記事No1203
投稿日: 2004/12/06(Mon) 22:30
投稿者さち。
[OSのVer]:Windows XP   [VBのVer]:VB.NET  
度々すみません。
フォーム上をダブルクリックした時に別のフォームを表示押させたいと思ってます。
sharp developにて作成してますので、新規ファイル→フォームの追加で
Form1を作成しました。そこで以下のようなコードをMainFormに書きましたが、表示してくれません。
他に書くべきことがあるのでしょうか?またその他注意する点などありましたら
教えてくださいm(._.)m よろしくお願いします。

Private Sub MainForm_DoubleClick()
 Dim nextform As New Form1()
 nextform.Show()    
End Sub

[ツリー表示へ]
タイトルRe: フォーム上をダブルクリック・・・
記事No1204
投稿日: 2004/12/07(Tue) 09:57
投稿者花ちゃん
>sharp developにて作成してますので、新規ファイル→フォームの追加で
???

.NETのダブルクリックイベントなら下記では。

    Private Sub Form1_DoubleClick(ByVal sender As Object, _
                                  ByVal e As System.EventArgs) Handles MyBase.DoubleClick
        Dim nextform As New Form1
        nextform.Show()
    End Sub

[ツリー表示へ]
タイトルRe^2: フォーム上をダブルクリック・・・
記事No1205
投稿日: 2004/12/07(Tue) 12:43
投稿者さち
花さん有り難うございます。
やはり下記のエラーが表示されます
MainForm.vb(640) : error BC30002: Type 'Form1' is not defined.

表示したいフォームはForm1というフォームでsecound.vbというファイル名で作ってます。

ちなみに640行は下の一文なのですが・・・
Dim nextform As New Form1

何かお気づきの点がございましたらご指摘頂けないでしょうか。

[ツリー表示へ]
タイトルRe^3: フォーム上をダブルクリック・・・
記事No1206
投稿日: 2004/12/07(Tue) 12:57
投稿者るしぇ
> 表示したいフォームはForm1というフォームでsecound.vbというファイル名で作ってます。

[VB.NET]ではファイルに複数のクラスを記述する事ができ、クラス名で
識別します。… Form1 というクラスは存在してますか?

また、フォームとして表示するなら System.Windows.Forms.Form クラスを
継承して無いとフォームを作るための手続きを全て自分で作る事となります。
そのあたりの処理はどうしてますか?

[ツリー表示へ]
タイトルRe^3: フォーム上をダブルクリック・・・
記事No1207
投稿日: 2004/12/07(Tue) 12:59
投稿者java.lang.Nullpo
// ごめんなさい、るしぇさんと被ってしまったようですね...
// 横槍で失礼します。

> 花さん有り難うございます。
> やはり下記のエラーが表示されます
> MainForm.vb(640) : error BC30002: Type 'Form1' is not defined.

エラーをちゃんと読んでください。
Form1 という型はないと言っています。
読めないわけではないでしょう?

> ちなみに640行は下の一文なのですが・・・
> Dim nextform As New Form1
> 何かお気づきの点がございましたらご指摘頂けないでしょうか。

Form1の定義がない。
つまり、Form1という名前のクラスが定義されていない。

> 表示したいフォームはForm1というフォームでsecound.vbというファイル名で作ってます。

[↑] この中に、お望みの「Form1」というフォームクラスがあるかどうか確認すれば終了かと。
多分、違う名前で定義されてるんじゃないでしょうか?

[ツリー表示へ]
タイトルRe^4: フォーム上をダブルクリック・・・
記事No1208
投稿日: 2004/12/07(Tue) 13:35
投稿者さち。
[OSのVer]:Windows    [VBのVer]:VB.NET  
花さん、るしぇさん、java.lang.Nullpoさんありがとうございました
以下コードをのせています(念のため全部載せてます。長くてうっとーしーでしょうし
恥ずかしいコードなので後で消しときますね。)
がご指摘頂いた事に関してはクリアしているようです。
(日本語化がうまくいかず日本語部分が?になってます、これも問題なんですが(^_^;)・・・)

Imports System
Imports System.Xml
Imports System.Drawing
Imports System.Windows.Forms

Namespace DefaultNamespace
    
    Public Class Form1
        Inherits System.Windows.Forms.Form
        Private label1 As System.Windows.Forms.Label
        Private textBox1 As System.Windows.Forms.TextBox
        Private textBox2 As System.Windows.Forms.TextBox
        
        Public Sub New()
            MyBase.New
            '
            ' The Me.InitializeComponent call is required for Windows Forms
designer support.
            '
            Me.InitializeComponent
            '
            ' TODO : Add constructor code after InitializeComponents
            '
        End Sub
        
        #Region " Windows Forms Designer generated code "
        ' This method is required for Windows Forms designer support.
        ' Do not change the method contents inside the source code editor. The
Forms designer might
        ' not be able to load this method if it was changed manually.
        Private Sub InitializeComponent()
            Me.textBox2 = New System.Windows.Forms.TextBox
            Me.textBox1 = New System.Windows.Forms.TextBox
            Me.label1 = New System.Windows.Forms.Label
            Me.SuspendLayout
            '
            'textBox2
            '
            Me.textBox2.BackColor =
System.Drawing.SystemColors.InactiveCaption
            Me.textBox2.Location = New System.Drawing.Point(32, 104)
            Me.textBox2.Multiline = true
            Me.textBox2.Name = "textBox2"
            Me.textBox2.Size = New System.Drawing.Size(440, 40)
            Me.textBox2.TabIndex = 2
            Me.textBox2.Text = "textBox2"
            '
            'textBox1
            '
            Me.textBox1.BackColor =
System.Drawing.SystemColors.InactiveCaption
            Me.textBox1.Location = New System.Drawing.Point(32, 48)
            Me.textBox1.Multiline = true
            Me.textBox1.Name = "textBox1"
            Me.textBox1.Size = New System.Drawing.Size(440, 40)
            Me.textBox1.TabIndex = 1
            Me.textBox1.Text = "textBox1"
            '
            'label1
            '
            Me.label1.ForeColor =
System.Drawing.SystemColors.ControlLightLight
            Me.label1.Location = New System.Drawing.Point(32, 24)
            Me.label1.Name = "label1"
            Me.label1.Size = New System.Drawing.Size(152, 23)
            Me.label1.TabIndex = 0
            Me.label1.Text = "label1"
            '
            'Form1
            '
            Me.AutoScaleBaseSize = New System.Drawing.Size(5, 12)
            Me.BackColor = System.Drawing.SystemColors.Desktop
            Me.ClientSize = New System.Drawing.Size(504, 158)
            Me.Controls.Add(Me.textBox2)
            Me.Controls.Add(Me.textBox1)
            Me.Controls.Add(Me.label1)
            Me.Name = "Form1"
            Me.Text = "Form1"
            AddHandler Load, AddressOf Me.Form1Load
            Me.ResumeLayout(false)
        End Sub
        #End Region
        
        Private Sub Form1Load(sender As System.Object, e As System.EventArgs)
            
        label1.Text = System.DateTime.Now.ToString("yyyy/MM/dd dddd")
        
         Dim doc2 as XmlDocument = new XmlDocument()
         doc2.Load("sorcefiles/eve.xml")
         Dim domdata2 as XmlNodeList
         Dim tod As String
         tod = "a" + System.DateTime.today.ToString("MM/dd")
    
         domdata2 = doc2.GetElementsByTagName(tod)
    
         textBox1.Text = System.DateTime.today.ToString("MM?dd?") + "??????: &
quot;
    
           If domdata2.Count > 0 Then
    
                Dim i As Integer
                for i = 0 To domdata2.Count-1
                textBox1.Text + = domdata2(i).InnerText + "?"
                Next
    
           End If
    
           '??
           Dim doc3 as XmlDocument = new XmlDocument()
           doc3.Load("sorcefiles/his.xml")
           Dim domdata3 as XmlNodeList
    
            domdata3 = doc3.GetElementsByTagName(tod)
    
             textBox2.Text = System.DateTime.today.ToString("MM?dd?") + "?????
??: "
    
            If domdata3.Count > 0 Then
    
                Dim i As Integer
                for i = 0 To domdata3.Count-1
                textBox2.Text + = domdata3(i).InnerText + "?"
                Next
    
            End If
            
        End Sub
        
    End Class
End Namespace

[ツリー表示へ]
タイトルRe^5: フォーム上をダブルクリック・・・
記事No1209
投稿日: 2004/12/07(Tue) 14:09
投稿者じゃんぬねっと
参照先http://jeanne.wankuma.com/
名前空間を指定してないとか・・・
もし、Form1 のクラスが外部ファイルだったらの話ですが・・・。

> ちなみに640行は下の一文なのですが・・・
> Dim nextform As New Form1

ここは、
 Dim nextform As New [名前空間].Form1()
とする。

[ツリー表示へ]
タイトルRe^5: フォーム上をダブルクリック・・・
記事No1210
投稿日: 2004/12/07(Tue) 14:23
投稿者るしぇ
おまけの予備知識として[オブジェクトブラウザ]や[クラスビュー]で
クラスの親子関係がどう構成されてて、どういう名前空間を指定して
あげればVBがちゃんとクラスの場所を見つけられるか確認して
おきましょう。

…Sharp Develop にあるのかどうかは知りませんが…
hhttp://icsharpcode.net/OpenSource/SD/Default.aspx
↑見たところ左下の[Cl...]タブは[クラスビュー]っぽいですが。

[ツリー表示へ]
タイトルRe^6: フォーム上をダブルクリック・・・
記事No1211
投稿日: 2004/12/07(Tue) 16:17
投稿者さち。
ありがとうございます
今調べてみたのですが
scenarioというコンバイン(vs.netでこれがなににあたるのかわかりません。ソリューションにあたる
のでしょ
うか)の下の階層にscenario.prjxというプロジェクトがあり、その下の階層にmain formtという
ファイルが存在しますが表示させたいsecound.vb(form2)がこの中に存在しません。
これが外部ファイルと言うことなのでしょうか・・・
secound.vb自体はMainForm.vbと同一フォルダ内にあります。
アプリケーションらしいアプリケーションを作るのはこれが初めてで名前空間に対する知識が浅いよう
です。
secound.vbをscenarioというコンバインの中に入れる特別な手続が必要なのでしょうか
度々スミマセン。よろしくお願いします。

[ツリー表示へ]
タイトルRe^7: フォーム上をダブルクリック・・・
記事No1212
投稿日: 2004/12/07(Tue) 17:15
投稿者るしぇ
>コンバイン(vs.netでこれがなににあたるのかわかりません。ソリューションにあたるのでしょうか)
hhttp://ag5.net/~prgroad/programming/sharpdevelop/sd_tips.html
そうみたいですね。

そもそも、[VB.NET2002(2003)]ではメニューバーの[プロジェクト]メニューに
[Windows フォームの追加]という項目があり、これを選ぶとフォームの雛形
となる、基本的なコードが書かれたファイルがプロジェクトに追加されます。

別プロジェクトなどのフォームをコピーして追加する場合は、ファイルを
コピーした後、プロジェクトに[既存項目の追加]でファイルを登録します。
同一フォルダにファイルがあるだけでは見れませんね。プロジェクトに登録
されてないと。

外部ファイル…というと Java とか C の感覚でしょうか?ファイルの #Include
とかはVBではできません。プロジェクトに登録されているファイルが全てです。
(DLL などの参照設定とかはできますが…)

MainForm は表示されるんですよね? MainForm のクラスはクラスビューで
ありますか?Form2(Form1?微妙に最初の質問と名前が変わってきてて分かり
難くなってます(^^;))クラスは?名前空間(Namespace)はたくさんある
クラスを階層構造にまとめるためのフォルダのようなものです。フォルダの
フルパスを指定しないとファイルの場所が分からないように、名前空間を
正しく書かないとクラスの場所が分からないのです。
hhttp://www.bcap.co.jp/hanafusa/bbs/wforum.cgi?no=1106&reno=no&oya=1106&mode=msgview&page=0

[ツリー表示へ]
タイトルRe^8: フォーム上をダブルクリック・・・
記事No1213
投稿日: 2004/12/07(Tue) 19:03
投稿者さち。
るしぇさん、ありがとうございます。
二つのリンク大変参考になりました。
一つ目のリンクで表示したいform1(先ほどはすみません)をコンバイン(プロジェクト)
に「追加」する作業が必要なようです。そうするとオブジェクトブラウザのようなものに
現れてくれるみたいです。
またそれに付随して名前空間についても知識を増やすことが出来ました。
今sharp developが使用できる環境にないので明日試してみて結果をご報告いたします。
ホントにありがとうございました。

[ツリー表示へ]
タイトルRe^8: フォーム上をダブルクリック・・・
記事No1214
投稿日: 2004/12/08(Wed) 11:40
投稿者さち。
java.lang.Nullpoさん、るしぇさん、花さん、お世話になりました。
やはりsharp developは少し勝手が違ってコンバインへの追加という
作業をしないといけなかったようです。うまくいきました。
ありがとうございます。

花さん、初歩的なことでこんなに長くなってしまってすみませんm(_._)m

[ツリー表示へ]