问题二:在VB.NET中是如何解决绝对路径的问题???就是说我想调用某一个文件,在程序中如果用相对路径来表示??
9 个解决方案
#1
1添加一个公共模块
在公共模块里实例化两个窗体 然后就可以像在vb6里 一样了
2 application.startuppath??
在公共模块里实例化两个窗体 然后就可以像在vb6里 一样了
2 application.startuppath??
#2
1、在FORM2里定义一个类,继承一下FORM1里的TEXTBOX1
2、把路径取了就行了,试试
2、把路径取了就行了,试试
#3
1.假设FORM1有TEXTBOX1
在form1中添加如下代码:
Public Property Text() As String
Get
Text = Me.TEXTBOX1.Text
End Get
Set(ByVal Value As String)
’如果设置TEXTBOX1.Text则在这里写 Me.TEXTBOX1.Text = Value
End Set
End Property
在form2里打开form1并调用form1里TEXTBOX1.Text的参数:
dim f as new form1
f.ShowDialog(Me)
msgbox f.text
2.Application.StartupPath
在form1中添加如下代码:
Public Property Text() As String
Get
Text = Me.TEXTBOX1.Text
End Get
Set(ByVal Value As String)
’如果设置TEXTBOX1.Text则在这里写 Me.TEXTBOX1.Text = Value
End Set
End Property
在form2里打开form1并调用form1里TEXTBOX1.Text的参数:
dim f as new form1
f.ShowDialog(Me)
msgbox f.text
2.Application.StartupPath
#4
to Surpass:
先谢谢你的帮忙,但问题还没有解决:
1。我是通过FORM1中BUTTON1来显示FORM2的,在FORM2初始化时我加入
dim f as new form1
f.ShowDialog(Me)
程序会再次弹出FORM1,这我是不想出现的。
还有就是TEXTBOX1.text的值是不断变化的,你的方法只是能取到FORM1初始化时的值,而当TEXTBOX1.text的值发生改变时就不能传递过去了。
2.我是想用相对路径来取得报表文件,我写法如下:
CrystalReportViewer1.ReportSource = Application.StartupPath & "\reports\Report1.rpt"
当我运行时,系统弹出警告说,加载路径错误。
还望大哥帮帮我!!!
先谢谢你的帮忙,但问题还没有解决:
1。我是通过FORM1中BUTTON1来显示FORM2的,在FORM2初始化时我加入
dim f as new form1
f.ShowDialog(Me)
程序会再次弹出FORM1,这我是不想出现的。
还有就是TEXTBOX1.text的值是不断变化的,你的方法只是能取到FORM1初始化时的值,而当TEXTBOX1.text的值发生改变时就不能传递过去了。
2.我是想用相对路径来取得报表文件,我写法如下:
CrystalReportViewer1.ReportSource = Application.StartupPath & "\reports\Report1.rpt"
当我运行时,系统弹出警告说,加载路径错误。
还望大哥帮帮我!!!
#5
顶楼回复有点可行,sshjoin在这里多提一个问题:
如果form1有两按钮,一个是“确定”,一个是“取消”,
如果想只按“确定”时才把form1中的数据传递给form2的控件,
如treeview。而按“取消”时不传数据。
这该如何做到?
如果form1有两按钮,一个是“确定”,一个是“取消”,
如果想只按“确定”时才把form1中的数据传递给form2的控件,
如treeview。而按“取消”时不传数据。
这该如何做到?
#6
1、只要把Textbox1的Modifiers改成Public,然后声明一个Form继承Form1。可以这样写:
Public frmPublic as system.windows.forms.form
'以下是修改Form1中的代码
Public Sub New()
MyBase.New()
'该调用是 Windows 窗体设计器所必需的。
InitializeComponent()
'在 InitializeComponent() 调用之后添加任何初始化
frmPublic = Me'在此时设置的才是Form1本身的实例
End Sub
最后这样调用就可以了:frmPublic.Text1.text="OK"
或者直接在模块中声明一个Public frmPublic as new Form1
之后始终调用这个frmPublic就可以保证不会出现生成多个Form1的实例
2、System.windows.forms.application.startuppath
Public frmPublic as system.windows.forms.form
'以下是修改Form1中的代码
Public Sub New()
MyBase.New()
'该调用是 Windows 窗体设计器所必需的。
InitializeComponent()
'在 InitializeComponent() 调用之后添加任何初始化
frmPublic = Me'在此时设置的才是Form1本身的实例
End Sub
最后这样调用就可以了:frmPublic.Text1.text="OK"
或者直接在模块中声明一个Public frmPublic as new Form1
之后始终调用这个frmPublic就可以保证不会出现生成多个Form1的实例
2、System.windows.forms.application.startuppath
#7
顶楼回复有点可行,sshjoin在这里多提一个问题:
如果form1有两按钮,一个是“确定”,一个是“取消”,
如果想只按“确定”时才把form1中的数据传递给form2的控件,
如treeview。而按“取消”时不传数据。
这该如何做到?
---------------------------------------------------------
很简单。看到vb.net下事件都有一个sender参量么?就照这个原理做。我想你明白我的意思。
如果form1有两按钮,一个是“确定”,一个是“取消”,
如果想只按“确定”时才把form1中的数据传递给form2的控件,
如treeview。而按“取消”时不传数据。
这该如何做到?
---------------------------------------------------------
很简单。看到vb.net下事件都有一个sender参量么?就照这个原理做。我想你明白我的意思。
#8
to CCL(VB卡尔):
先谢谢你的帮忙。
第二个问题解决啦,但第一个问题还不能解决啊,用你的第一个方法,在FORM2根本就不能调用frmPublic.TextBox1.text,编译通不过;用你的第二个方法,在FORM2中是可以调用frmPublic.Text1.text,但它的值是FORM1初始化时候的值,它并没有根据我的要求动态去改变,再次麻烦大哥帮忙!
先谢谢你的帮忙。
第二个问题解决啦,但第一个问题还不能解决啊,用你的第一个方法,在FORM2根本就不能调用frmPublic.TextBox1.text,编译通不过;用你的第二个方法,在FORM2中是可以调用frmPublic.Text1.text,但它的值是FORM1初始化时候的值,它并没有根据我的要求动态去改变,再次麻烦大哥帮忙!
#9
不用谢。
对不起我忽略了你要调用窗口下的控件集。
第一个方法的适用情况是Form1是启动窗体时,Form1这个Class本身也必须是Public的,且frmPublic的声明要放在模块中。这个方法需要引入对象的控件集合,不推荐你使用。
第二种方法同样要求Form1这个Class是Public的,同时Form1不应该是启动窗体(可以使用Sub Main来启动工程,我一向是这么做的),这样会比较简单。我的实验中没有出现你所说的问题,请你仔细调试一下。
对不起我忽略了你要调用窗口下的控件集。
第一个方法的适用情况是Form1是启动窗体时,Form1这个Class本身也必须是Public的,且frmPublic的声明要放在模块中。这个方法需要引入对象的控件集合,不推荐你使用。
第二种方法同样要求Form1这个Class是Public的,同时Form1不应该是启动窗体(可以使用Sub Main来启动工程,我一向是这么做的),这样会比较简单。我的实验中没有出现你所说的问题,请你仔细调试一下。
#1
1添加一个公共模块
在公共模块里实例化两个窗体 然后就可以像在vb6里 一样了
2 application.startuppath??
在公共模块里实例化两个窗体 然后就可以像在vb6里 一样了
2 application.startuppath??
#2
1、在FORM2里定义一个类,继承一下FORM1里的TEXTBOX1
2、把路径取了就行了,试试
2、把路径取了就行了,试试
#3
1.假设FORM1有TEXTBOX1
在form1中添加如下代码:
Public Property Text() As String
Get
Text = Me.TEXTBOX1.Text
End Get
Set(ByVal Value As String)
’如果设置TEXTBOX1.Text则在这里写 Me.TEXTBOX1.Text = Value
End Set
End Property
在form2里打开form1并调用form1里TEXTBOX1.Text的参数:
dim f as new form1
f.ShowDialog(Me)
msgbox f.text
2.Application.StartupPath
在form1中添加如下代码:
Public Property Text() As String
Get
Text = Me.TEXTBOX1.Text
End Get
Set(ByVal Value As String)
’如果设置TEXTBOX1.Text则在这里写 Me.TEXTBOX1.Text = Value
End Set
End Property
在form2里打开form1并调用form1里TEXTBOX1.Text的参数:
dim f as new form1
f.ShowDialog(Me)
msgbox f.text
2.Application.StartupPath
#4
to Surpass:
先谢谢你的帮忙,但问题还没有解决:
1。我是通过FORM1中BUTTON1来显示FORM2的,在FORM2初始化时我加入
dim f as new form1
f.ShowDialog(Me)
程序会再次弹出FORM1,这我是不想出现的。
还有就是TEXTBOX1.text的值是不断变化的,你的方法只是能取到FORM1初始化时的值,而当TEXTBOX1.text的值发生改变时就不能传递过去了。
2.我是想用相对路径来取得报表文件,我写法如下:
CrystalReportViewer1.ReportSource = Application.StartupPath & "\reports\Report1.rpt"
当我运行时,系统弹出警告说,加载路径错误。
还望大哥帮帮我!!!
先谢谢你的帮忙,但问题还没有解决:
1。我是通过FORM1中BUTTON1来显示FORM2的,在FORM2初始化时我加入
dim f as new form1
f.ShowDialog(Me)
程序会再次弹出FORM1,这我是不想出现的。
还有就是TEXTBOX1.text的值是不断变化的,你的方法只是能取到FORM1初始化时的值,而当TEXTBOX1.text的值发生改变时就不能传递过去了。
2.我是想用相对路径来取得报表文件,我写法如下:
CrystalReportViewer1.ReportSource = Application.StartupPath & "\reports\Report1.rpt"
当我运行时,系统弹出警告说,加载路径错误。
还望大哥帮帮我!!!
#5
顶楼回复有点可行,sshjoin在这里多提一个问题:
如果form1有两按钮,一个是“确定”,一个是“取消”,
如果想只按“确定”时才把form1中的数据传递给form2的控件,
如treeview。而按“取消”时不传数据。
这该如何做到?
如果form1有两按钮,一个是“确定”,一个是“取消”,
如果想只按“确定”时才把form1中的数据传递给form2的控件,
如treeview。而按“取消”时不传数据。
这该如何做到?
#6
1、只要把Textbox1的Modifiers改成Public,然后声明一个Form继承Form1。可以这样写:
Public frmPublic as system.windows.forms.form
'以下是修改Form1中的代码
Public Sub New()
MyBase.New()
'该调用是 Windows 窗体设计器所必需的。
InitializeComponent()
'在 InitializeComponent() 调用之后添加任何初始化
frmPublic = Me'在此时设置的才是Form1本身的实例
End Sub
最后这样调用就可以了:frmPublic.Text1.text="OK"
或者直接在模块中声明一个Public frmPublic as new Form1
之后始终调用这个frmPublic就可以保证不会出现生成多个Form1的实例
2、System.windows.forms.application.startuppath
Public frmPublic as system.windows.forms.form
'以下是修改Form1中的代码
Public Sub New()
MyBase.New()
'该调用是 Windows 窗体设计器所必需的。
InitializeComponent()
'在 InitializeComponent() 调用之后添加任何初始化
frmPublic = Me'在此时设置的才是Form1本身的实例
End Sub
最后这样调用就可以了:frmPublic.Text1.text="OK"
或者直接在模块中声明一个Public frmPublic as new Form1
之后始终调用这个frmPublic就可以保证不会出现生成多个Form1的实例
2、System.windows.forms.application.startuppath
#7
顶楼回复有点可行,sshjoin在这里多提一个问题:
如果form1有两按钮,一个是“确定”,一个是“取消”,
如果想只按“确定”时才把form1中的数据传递给form2的控件,
如treeview。而按“取消”时不传数据。
这该如何做到?
---------------------------------------------------------
很简单。看到vb.net下事件都有一个sender参量么?就照这个原理做。我想你明白我的意思。
如果form1有两按钮,一个是“确定”,一个是“取消”,
如果想只按“确定”时才把form1中的数据传递给form2的控件,
如treeview。而按“取消”时不传数据。
这该如何做到?
---------------------------------------------------------
很简单。看到vb.net下事件都有一个sender参量么?就照这个原理做。我想你明白我的意思。
#8
to CCL(VB卡尔):
先谢谢你的帮忙。
第二个问题解决啦,但第一个问题还不能解决啊,用你的第一个方法,在FORM2根本就不能调用frmPublic.TextBox1.text,编译通不过;用你的第二个方法,在FORM2中是可以调用frmPublic.Text1.text,但它的值是FORM1初始化时候的值,它并没有根据我的要求动态去改变,再次麻烦大哥帮忙!
先谢谢你的帮忙。
第二个问题解决啦,但第一个问题还不能解决啊,用你的第一个方法,在FORM2根本就不能调用frmPublic.TextBox1.text,编译通不过;用你的第二个方法,在FORM2中是可以调用frmPublic.Text1.text,但它的值是FORM1初始化时候的值,它并没有根据我的要求动态去改变,再次麻烦大哥帮忙!
#9
不用谢。
对不起我忽略了你要调用窗口下的控件集。
第一个方法的适用情况是Form1是启动窗体时,Form1这个Class本身也必须是Public的,且frmPublic的声明要放在模块中。这个方法需要引入对象的控件集合,不推荐你使用。
第二种方法同样要求Form1这个Class是Public的,同时Form1不应该是启动窗体(可以使用Sub Main来启动工程,我一向是这么做的),这样会比较简单。我的实验中没有出现你所说的问题,请你仔细调试一下。
对不起我忽略了你要调用窗口下的控件集。
第一个方法的适用情况是Form1是启动窗体时,Form1这个Class本身也必须是Public的,且frmPublic的声明要放在模块中。这个方法需要引入对象的控件集合,不推荐你使用。
第二种方法同样要求Form1这个Class是Public的,同时Form1不应该是启动窗体(可以使用Sub Main来启动工程,我一向是这么做的),这样会比较简单。我的实验中没有出现你所说的问题,请你仔细调试一下。