openfiledialog在特定机器上未打开...

2020-08-25 05:43发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨..

我需要您的宝贵建议。.我知道这是sap b1的sdk

但是我需要在 vb.net

上输入一些信息

我有一个矩阵。.我的要求是我想从Excel工作表上传到矩阵。

但是我在一个编辑框旁边放了一个按钮。

我想浏览该文件夹,但是在我按下按钮opendialog后不显示...(浏览选项)

在某些机器上,以下代码不起作用,在某些机器上,以下代码不起作用...

我可以知道为什么吗

假设我在系统中运行,如果我运行的源代码浏览选项不起作用

但是如果我在系统中运行具有相同版本的ard,则浏览选项正在运行,那么我的源代码中没有断点。

我测试了几次,发现这是问题所在。

在其他系统ard和源代码中正常工作。

但是最近我发现在某些系统中也使用ard不能正常工作...

我需要您的宝贵建议...

这是我的代码。

我需要您的宝贵建议。

我尝试了论坛中存在一些帖子。

但这也不起作用...

Windows包装器

----------------------------------

公共类WindowWrapper

实现System.Windows.Forms.IWin32Window

私有_hwnd作为IntPtr

Public Sub New(ByVal句柄为IntPtr)

_hwnd =句柄

结束子

System.IntPtr实现System.Windows.Forms.IWin32Window.Handle的公共ReadOnly属性Handle()

获取

返回_hwnd

结束获取

最终财产

结束班级

在单击按钮时

--------------------------------------------

'测试

尝试

如果(pVal.FormUID =" BOQ"和pVal.EventType = SAPbouiCOM.BoEventTypes.et_ITEM_PRESSED和pVal.BeforeAction = True且pVal.ItemUID =" 42")然后

'如果pVal.FormMode = SAPbouiCOM.BoFormMode.fm_ADD_MODE那么

oForm = SBO_Application.Forms.Item(" BOQ")

尝试

oForm = SBO_Application.objApplication.Forms.ActiveForm

oForm = SBO_Application.Forms.ActiveForm

ShowFolderBrowserThread =新线程.Thread(AddressOf ShowFolderBrowser)

如果ShowFolderBrowserThread.ThreadState = Threading.ThreadState.Unstarted然后

ShowFolderBrowserThread.SetApartmentState(Threading.ApartmentState.STA)

ShowFolderBrowserThread.Start()

ShowFolderBrowserThread.Join()

其他

ShowFolderBrowserThread.Abort()

如果结束

'其他

'ShowFolderBrowserThread =新线程。Thread(AddressOf ShowFolderBrowser)

'如果ShowFolderBrowserThread.ThreadState = System.Threading.ThreadState.Unstarted然后

'ShowFolderBrowserThread.SetApartmentState(System.Threading.ApartmentState.STA)

'ShowFolderBrowserThread.Start()

'ElseIf ShowFolderBrowserThread.ThreadState = System.Threading.ThreadState.Stopped然后

'ShowFolderBrowserThread.Start()

'ShowFolderBrowserThread.Join()

'如果结束

'而ShowFolderBrowserThread.ThreadState = Threading.ThreadState.Running

'Windows.Forms.Application.DoEvents()

'结束时间

oedit = oForm.Items.Item(" 43")。特定

oedit.String = strpath

ShowFolderBrowserThread.Abort()

例外捕获

SBO_Application.MessageBox(例如消息)

结束尝试

如果结束

例外捕获

SBO_Application.MessageBox(例如消息)

结束尝试

--------------------

Public Sub ShowFolderBrowser()

'尝试

将MyTest设置为新的OpenFileDialog

将MyProcs()视作进程

MyProcs = Process.GetProcessesByName(" SAP Business One")

Dim i As Integer = 0

如果MyProcs.Length> = 1那么

"对于i作为整数= 0到MyProcs.Length-1

将MyWindow设置为新的WindowWrapper(MyProcs(i).MainWindowHandle)

MyTest.InitialDirectory =" C:\"

MyTest.Filter ="所有文件(* .xlsx)| * .xlsx |所有文件(* .xls)| * .xls"

'MyTest.ShowDialog(MyWindow)

如果MyTest.ShowDialog(MyWindow)= DialogResult.OK,则

strpath = MyTest.FileName

'ShowFolderBrowserThread.Abort()

其他

'ShowFolderBrowserThread.Abort()

如果结束

'下一步

其他

SBO_Application.objApplication.MessageBox("未找到SBO实例。")

'ShowFolderBrowserThread.Abort()

如果结束

ShowFolderBrowserThread.Abort()

'作为例外捕获

'SBO_Application.MessageBox(例如消息)

'ShowFolderBrowserThread.Abort()

'结束尝试

结束子

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨..

我需要您的宝贵建议。.我知道这是sap b1的sdk

但是我需要在 vb.net

上输入一些信息

我有一个矩阵。.我的要求是我想从Excel工作表上传到矩阵。

但是我在一个编辑框旁边放了一个按钮。

我想浏览该文件夹,但是在我按下按钮opendialog后不显示...(浏览选项)

在某些机器上,以下代码不起作用,在某些机器上,以下代码不起作用...

我可以知道为什么吗

假设我在系统中运行,如果我运行的源代码浏览选项不起作用

但是如果我在系统中运行具有相同版本的ard,则浏览选项正在运行,那么我的源代码中没有断点。

我测试了几次,发现这是问题所在。

在其他系统ard和源代码中正常工作。

但是最近我发现在某些系统中也使用ard不能正常工作...

我需要您的宝贵建议...

这是我的代码。

我需要您的宝贵建议。

我尝试了论坛中存在一些帖子。

但这也不起作用...

Windows包装器

----------------------------------

公共类WindowWrapper

实现System.Windows.Forms.IWin32Window

私有_hwnd作为IntPtr

Public Sub New(ByVal句柄为IntPtr)

_hwnd =句柄

结束子

System.IntPtr实现System.Windows.Forms.IWin32Window.Handle的公共ReadOnly属性Handle()

获取

返回_hwnd

结束获取

最终财产

结束班级

在单击按钮时

--------------------------------------------

'测试

尝试

如果(pVal.FormUID =" BOQ"和pVal.EventType = SAPbouiCOM.BoEventTypes.et_ITEM_PRESSED和pVal.BeforeAction = True且pVal.ItemUID =" 42")然后

'如果pVal.FormMode = SAPbouiCOM.BoFormMode.fm_ADD_MODE那么

oForm = SBO_Application.Forms.Item(" BOQ")

尝试

oForm = SBO_Application.objApplication.Forms.ActiveForm

oForm = SBO_Application.Forms.ActiveForm

ShowFolderBrowserThread =新线程.Thread(AddressOf ShowFolderBrowser)

如果ShowFolderBrowserThread.ThreadState = Threading.ThreadState.Unstarted然后

ShowFolderBrowserThread.SetApartmentState(Threading.ApartmentState.STA)

ShowFolderBrowserThread.Start()

ShowFolderBrowserThread.Join()

其他

ShowFolderBrowserThread.Abort()

如果结束

'其他

'ShowFolderBrowserThread =新线程。Thread(AddressOf ShowFolderBrowser)

'如果ShowFolderBrowserThread.ThreadState = System.Threading.ThreadState.Unstarted然后

'ShowFolderBrowserThread.SetApartmentState(System.Threading.ApartmentState.STA)

'ShowFolderBrowserThread.Start()

'ElseIf ShowFolderBrowserThread.ThreadState = System.Threading.ThreadState.Stopped然后

'ShowFolderBrowserThread.Start()

'ShowFolderBrowserThread.Join()

'如果结束

'而ShowFolderBrowserThread.ThreadState = Threading.ThreadState.Running

'Windows.Forms.Application.DoEvents()

'结束时间

oedit = oForm.Items.Item(" 43")。特定

oedit.String = strpath

ShowFolderBrowserThread.Abort()

例外捕获

SBO_Application.MessageBox(例如消息)

结束尝试

如果结束

例外捕获

SBO_Application.MessageBox(例如消息)

结束尝试

--------------------

Public Sub ShowFolderBrowser()

'尝试

将MyTest设置为新的OpenFileDialog

将MyProcs()视作进程

MyProcs = Process.GetProcessesByName(" SAP Business One")

Dim i As Integer = 0

如果MyProcs.Length> = 1那么

"对于i作为整数= 0到MyProcs.Length-1

将MyWindow设置为新的WindowWrapper(MyProcs(i).MainWindowHandle)

MyTest.InitialDirectory =" C:\"

MyTest.Filter ="所有文件(* .xlsx)| * .xlsx |所有文件(* .xls)| * .xls"

'MyTest.ShowDialog(MyWindow)

如果MyTest.ShowDialog(MyWindow)= DialogResult.OK,则

strpath = MyTest.FileName

'ShowFolderBrowserThread.Abort()

其他

'ShowFolderBrowserThread.Abort()

如果结束

'下一步

其他

SBO_Application.objApplication.MessageBox("未找到SBO实例。")

'ShowFolderBrowserThread.Abort()

如果结束

ShowFolderBrowserThread.Abort()

'作为例外捕获

'SBO_Application.MessageBox(例如消息)

'ShowFolderBrowserThread.Abort()

'结束尝试

结束子

付费偷看设置
发送
3条回答
风早神人
1楼 · 2020-08-25 06:11.采纳回答

嗨,

您确定文件对话框根本没有打开吗? 由于Windows对话框可以在" SBO客户端"后面打开,这是一个老问题,并且由于它们没有任务栏图标,因此好像没有显示。

尝试最小化所有打开的窗口。

您可以在SCN中找到很多有关此问题的讨论。

致谢

Maik

SKY徐
2楼-- · 2020-08-25 06:13

这似乎与之相关:

关于这个/类似问题的讨论很多,很多都以结尾 加上"它不起作用",所以我想还有另外一个角度(与操作系统相关,用户特权...)

问候,

Maik

木偶小白
3楼-- · 2020-08-25 06:30
< p>尝试一下

 System.Windows.Forms.Formform = newSystem.Windows.Forms.Form();
 form.TopMost = true;
 OpenFileDialog objOpenFileDialog = new OpenFileDialog();
 objOpenFileDialog.InitialDirectory = System.Windows.Forms.Application.StartupPath +" \";
 objOpenFileDialog.Filter =" Excel文件(* .xls)| * .xls";
 if(objOpenFileDialog.ShowDialog(form)!= DialogResult.Cancel)
 {
 字符串ExcelFilePath = objOpenFileDialog.FileName;
 .....
 } 

一周热门 更多>