K Feening
asked on
Vb.Net Form.show
Hi
I run a program from a main menu
Private Sub SelectEmpToolStripMenuItem _Click(ByV al sender As System.Object, ByVal e As System.EventArgs) Handles SelectEmpToolStripMenuItem .Click
Windows.Forms.Cursor.Curre nt = Cursors.WaitCursor
Dim emp As New EmpDispayForm
emp.ShowInTaskbar = False
emp.ShowDialog()
End Sub
and the EmpDisplayForm works fine but if I run the same EmpDisplayform from another screen in the same project it wont compile it has error
type EmpDisplayform is not defined
It is being run by Clicking on an Icon
Me.AddUserAction(Actions.O penDisplay , True, True, "&Open", True, My.Resources.Open, "Open Employee Display Selection", True, True, False, Keys.None)
Public Overrides Sub RunAction(ByVal id As Integer)
Select Case id
Case ListPanel.BaseActions.Open
Me.OpenItem()
Case Actions.OpenDisplay
Me.OpenEmp()
Case Else
MyBase.RunAction(id)
End Select
End Sub
''' <summary>
''' open the selected Display
''' </summary>
Private Sub OpenEmp()
Dim emp As New EmpDisplayForm 'This where the Error occurs
emp.Show()
' refresh the list
Me.RefreshContent()
End Sub
Thank You
I run a program from a main menu
Private Sub SelectEmpToolStripMenuItem
Windows.Forms.Cursor.Curre
Dim emp As New EmpDispayForm
emp.ShowInTaskbar = False
emp.ShowDialog()
End Sub
and the EmpDisplayForm works fine but if I run the same EmpDisplayform from another screen in the same project it wont compile it has error
type EmpDisplayform is not defined
It is being run by Clicking on an Icon
Me.AddUserAction(Actions.O
Public Overrides Sub RunAction(ByVal id As Integer)
Select Case id
Case ListPanel.BaseActions.Open
Me.OpenItem()
Case Actions.OpenDisplay
Me.OpenEmp()
Case Else
MyBase.RunAction(id)
End Select
End Sub
''' <summary>
''' open the selected Display
''' </summary>
Private Sub OpenEmp()
Dim emp As New EmpDisplayForm 'This where the Error occurs
emp.Show()
' refresh the list
Me.RefreshContent()
End Sub
Thank You
ASKER
No it doesn't go to definition from the error
From the main menu it does
the form is defined Public Class EmpDisplayform
From the main menu it does
the form is defined Public Class EmpDisplayform
Are you really in the same project, or are you in the same solution but 2 different projects. Some programmers do not really make the difference between a project and a solution, but it is important.
If it is in a solution, and the form is not in the same project as the line that tries to instantiate it, then you will get that error.
The way to go in that case is to first reference the project that contains the form in the project that needs it, and instantiate it by using the namespace of the original project. Let's say that the project that contains the form is called Project1:
Dim emp As New Project1.EmpDisplayForm
If it is in a solution, and the form is not in the same project as the line that tries to instantiate it, then you will get that error.
The way to go in that case is to first reference the project that contains the form in the project that needs it, and instantiate it by using the namespace of the original project. Let's say that the project that contains the form is called Project1:
Dim emp As New Project1.EmpDisplayForm
ASKER
When you look at the solution explorer its in the same project
if you look at the properties of the Project Assembly name is PayrollSystem, Root Namespace = PayrollSystem
Application type = Windows form application, startup Object = Startup
The folder containing empdisplayform is directly under it
if you look at the properties of the Project Assembly name is PayrollSystem, Root Namespace = PayrollSystem
Application type = Windows form application, startup Object = Startup
The folder containing empdisplayform is directly under it
The position of the folder or the file means nothing for the compiler, as long as the file is really part of the project.
If Dim emp As New EmpDispayForm works in one place in the project, the class should also be visible everywhere else.
You might try adding the namespace when referencing the class:
Dim emp As New PayrollSystem.EmpDisplayFo rm
If this does not work, then are Private Sub SelectEmpToolStripMenuItem _Click and Private Sub OpenEmp() in the same project? Although by default the Solution Explorer shows you a directory, the files in it are not necessarily linked to that project. The only sure way to know what is in a project is through the Object Browser (View menu or Ctrl-Alt-J). If it shows there under the Application name, and if it is in the same namespace as the calling code, then it should work.
If Dim emp As New EmpDispayForm works in one place in the project, the class should also be visible everywhere else.
You might try adding the namespace when referencing the class:
Dim emp As New PayrollSystem.EmpDisplayFo
If this does not work, then are Private Sub SelectEmpToolStripMenuItem
ASKER
Thanks for you help
I have little experience in VB as my previous questions show
Ctrl-Alt-J
Shows a lot of information
but in it is
--{} Payrollsystem
+ EmpDisplayform
Right click on empdisplayform
select go to definition it correctly displays empdisplayform
Select browse definition shows Public class empdisplayform
Find all references shows
Dim empdisplay as new empdisplayform()
Partial Class empdisplayform \empdisplayform.Designer.v b(2,15)
public class empdisplayform \empdisplayform.vb (16,14)
Hope this helps
I have little experience in VB as my previous questions show
Ctrl-Alt-J
Shows a lot of information
but in it is
--{} Payrollsystem
+ EmpDisplayform
Right click on empdisplayform
select go to definition it correctly displays empdisplayform
Select browse definition shows Public class empdisplayform
Find all references shows
Dim empdisplay as new empdisplayform()
Partial Class empdisplayform \empdisplayform.Designer.v
public class empdisplayform \empdisplayform.vb (16,14)
Hope this helps
OK. Now, we know that EmpDisplayform is in PayrollSystem.
But is the module or form that contains Private Sub OpenEmp also in the same namespace?
But is the module or form that contains Private Sub OpenEmp also in the same namespace?
ASKER
found name space by using
dim ns as string = gettype(EmpDisplayform).Na meSpace it is in the same namespace as the mainform
and the form calling EmpDisplayform is in a different namespace
it uses ??
namespace company.Payroll.UiLists
'all the code then
end Namespace
Where EmpDisplayform uses
Imports company.Payroll.UiLists
Beyond me
hope this helps
dim ns as string = gettype(EmpDisplayform).Na
and the form calling EmpDisplayform is in a different namespace
it uses ??
namespace company.Payroll.UiLists
'all the code then
end Namespace
Where EmpDisplayform uses
Imports company.Payroll.UiLists
Beyond me
hope this helps
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
There has to be something I have done wrong
as Dim emp As New PayrollSystem.EmpDisplayFo rm the payrollsystem doesn't appear in the selection drop down
I will erase the form and start again
Thanks
as Dim emp As New PayrollSystem.EmpDisplayFo
I will erase the form and start again
Thanks
If should take you to the form. If it doesn't then the second form does not know about the empdisplayform.
How is empdisplayform defined in the actual form, is it Public, Private or Friend