【发布时间】:2019-06-04 14:49:35
【问题描述】:
我有一个 form_click 事件和一个单一类下的 Public Shared Sub。 现在我需要从其他事件中调用这个 Shared Sub。但我在将参数传递给调用 Sub 时遇到问题。
你能不能帮帮我,也解释一下这里发生了什么!
Public Class SC
' More codes here.......
Public Sub SC_Click(sender As Object, e As EventArgs) Handles Me.Click
Try
Dim document As New Document()
Dim section As Section = document.AddSection()
'SaveDoc(document) I WANT TO CALL THIS INSIDE Private Sub SaveToolStripMenuItem_Click
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Public Shared Sub SaveDoc(document As Document)
Dim fname = InputBox("Enter file name:", "file name")
document.SaveToFile(fname & ".docx", FileFormat.Docx)
MsgBox("""" & fname & ".DOCX"" is saved!")
End Sub
Private Sub SaveToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles SaveToolStripMenuItem.Click
'I Want To Call SaveDoc() Here with Params
End Sub
我尝试将 Sub 更改为共享函数,但问题存在。 请帮我传递参数!
到目前为止,您已经明白这是一个为我自己截屏的工具。 目前,每次点击都会保存 word 文件!
当我从 Form_Click 事件中调用共享的 Sub saveDoc() 时,它工作得非常好。但是我需要将代码分成单独的事件,因为我只想保存文件一次,而不是每次点击。
源代码:
Click HERE to view the source code
IDE 建议:
【问题讨论】:
-
您像调用任何其他子一样调用共享子。但是你有没有在任何地方初始化的变量 fname 。似乎应该是一个参数。
-
fname可能是主类中的实例成员(字段)。您不能在静态(共享)方法中使用实例成员。删除 shared 修饰符或添加fileName as String参数并将该成员作为参数传递。 -
编译错误信息应该足以告诉你如何解决你的问题。
-
@the_lotus:很抱歉截断了代码。我在剪切代码时删除了这些行。请您再检查一次好吗? Document() 类的 document 对象在 SaveDoc()。因此我需要传递一些我无法得出结论的东西:(
-
@Jimi:很抱歉截断了代码。我在剪切代码时删除了这些行。你能再检查一次吗?