我有windows应用程序,我的程序有以下代码:
Dim fileName As String = "C:\TEMP\json\Main API\Sound.json"
Dim jsonFile As String = File.ReadAllText(fileName)
TextBox2.AppendText(jsonFile)
Dim c As mTest = JsonConvert.DeserializeObject(Of mTest)(jsonFile)
TextBox2.AppendText(c.mName & vbCrLf)
现在,在MainForm()上,我有几个按钮,点击每个按钮,我隐藏MainForm并使用opendialog打开一个新表单(Windows窗体),如下面的代码所示:
static class Program
{
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}
}
现在,在TestCenter表单中,我有一个用于选择文件的功能(OpenFileDialog),如下面的代码所示:
this.Hide();
TestCenter testCenter = new TestCenter();
testCenter.ShowDialog();
this.Show();
我有一个TextBox和一个PictureBox,用于在OpenFileDialog中进行选择后显示文件路径和图像。
奇怪的是,当我从Visual Studio或我的笔记本电脑(Windows 10)上安装的程序运行此程序时,它运行良好,没有任何问题。 但是,当我在客户端计算机(Windows 7)上安装它时,当我单击调用此OpenFileDialog()的按钮时,它会冻结此Windows窗体应用程序。
有人可以帮我解决这个问题吗?
-------- -------- EDIT -------- 18年2月7日
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "image file |*.jpg;*.png;*.gif";
DialogResult dr = ofd.ShowDialog();
if (dr == DialogResult.Cancel)
return;
pictureBox_PartImage.Image = Image.FromFile(ofd.FileName);
txt_ImagePath.Text = ofd.FileName;
答案 0 :(得分:0)
我认为您的代码不是问题所在。我怀疑这是一个安装问题。确保此程序首先运行:
using System;
using System.Windows.Forms;
static class Program
{
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
OpenFileDialog dlg = new OpenFileDialog();
dlg.ShowDialog();
}
}
确保已安装正在使用的正确版本的.NET运行时。
OpenFileDialog会将shell扩展加载到您的应用程序中,如果客户端计算机安装了奇怪的shell扩展,那么它可能会干扰您的应用程序。
答案 1 :(得分:0)
在Windows 7计算机上调试程序以缩小到精确的问题。
以交互方式调试以查看究竟是什么电话挂起
从那里进一步排查问题,您将获得更多信息。在我为ANYCPU建造之前,我已经看过这个。试试x86进行测试。
答案 2 :(得分:0)
显然,在我的连接字符串中添加OLE DB Services = -1
解决了这个问题。
在我的表单中,我使用Access DB Connection从数据库中获取数据。这就是搞乱加载OpenFileDialog的问题。而且,这也解释了为什么示例代码(由Wyck提供)工作正常(因为那里没有使用DB Connection)。
我想知道为什么Vikas4u对this问题(这是我的参考)的答案被否决了。