好吧,我写了我自己的照片查看器来打开我的电脑上的jpg,gif,png文件。 然而,由于某种原因,每当我在Windows中设置文件关联,使用正常的属性菜单,然后select我的EXE程序,当我点击一个图片无法打开程序。
我试着通过添加消息框来进行debugging,但是却没有输出。
我看到当前窗口松散的焦点,但没有出现。 而任务pipe理器不会显示我的过程开放。
我认为windows可能会阻止我的应用程序以某种方式运行,iv试图禁用我的防病毒软件,并运行它认为这是,但没有骰子。
Program.cs中
namespace PictureViewer { static class Program { /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main(string[] args) { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); if (args == null || args.Length == 0) { //Console.WriteLine("args is null"); // Check for null array Application.Run(new Form1()); } else { for (int i = 0; i < args.Length; i++) // Loop through array { string argument = args[i]; Application.Run(new Form1(argument)); } } } } }
里面的Form1是2个构造函数,1和一个没有一串string然后我只是做一个
Picturebox1.Image = Image.fromFile(pram);
我很确定这是ac#的东西,它更多的是一个愚蠢的东西。 Windows 8.1的参考。
编辑:heres form1.cs
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace PictureViewer { public partial class Form1 : Form { string curentdirectory = ""; List<string> imageindir; int curentindex; public Form1() { InitializeComponent(); imageindir = new List<string>(); } public Form1(string initfile) { InitializeComponent(); curentdirectory = initfile.Substring(0, initfile.LastIndexOf("/")); imageindir = new List<string>(); try { this.Text = initfile; img.Image = Image.FromFile(initfile); } catch(Exception ex) { MessageBox.Show("ERR"); } } private void btnleft_Click(object sender, EventArgs e) { try { if (--curentindex < 0) { curentindex = imageindir.Count - 1; } img.Image = Image.FromFile(imageindir[curentindex]); } catch (Exception ex) { MessageBox.Show("ERR"); } } private void btnright_Click(object sender, EventArgs e) { try { if (++curentindex > imageindir.Count - 1) { curentindex = 0; } img.Image = Image.FromFile(imageindir[curentindex]); } catch (Exception ex) { MessageBox.Show("ERR"); } } private void getDirFromFileName(string dir) { DirectoryInfo di; di = new DirectoryInfo(curentdirectory); var directories = di.GetFiles("*", SearchOption.TopDirectoryOnly); foreach (FileInfo d in directories) { if(dir == d.Name) { curentindex = imageindir.Count; } if(validExtension(d.Name)) { imageindir.Add(d.Name); } } } private bool validExtension(string val) { val = val.ToLower(); if (val.Contains(".jpg") || val.Contains(".jpeg") || val.Contains(".gif") || val.Contains(".png") || val.Contains(".bmp")) return true; return false; } } }
有一个错误在curentdirectory = initfile.Substring(0, initfile.LastIndexOf("/"));
线。 /
应该是\\
。 可能是这里的问题。 我测试了你的代码,它工作正常。 我在这里上传了测试项目
附加信息 :项目已在Visual Studio 2005中创建。