2
我在.net 3.5(VS c#express)中創建了這個Windows窗體應用程序。 現在我想轉換它,以便它可以在只安裝.net 2.0的情況下運行。所以在我的項目屬性中:我選擇「目標框架」爲2.0,修正了我得到的錯誤。我的應用程序不會在.net 2.0下運行,在3.5上運行
之後,該應用程序運行正常,安裝.net 3.0,但不會運行在全新安裝的xp與.net 2.0安裝。 「應用程序崩潰,發送錯誤報告」 我該怎麼辦?我想要這個東西在2.0下運行。
這裏是代碼:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Net;
using System.Xml;
using System.Runtime.InteropServices;
using Microsoft.Win32;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
int numberOfMatches = 0;
string[,] data;
bool update = true ;
string fileToParse = Path.GetTempPath() + "cricketfile.xml";
int matchToShow = 0;
bool showschedule = true ;
public const int WM_NCLBUTTONDOWN = 0xA1;
public const int HT_CAPTION = 0x2;
[DllImportAttribute("user32.dll")]
public static extern int SendMessage(IntPtr hWnd,
int Msg, int wParam, int lParam);
[DllImportAttribute("user32.dll")]
public static extern bool ReleaseCapture();
RegistryKey rkApp = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
public Form1()
{
InitializeComponent();
if (Environment.OSVersion.Version.Major <= 5)
{
// MessageBox.Show("xp");
}
else
{
label1.Top = 1;
pictureBox1.Top = 1;
}
// label1.Left = 1;
int X = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width/2 - this.Width/2;
this.Location = new System.Drawing.Point(X, -5);
if (rkApp.GetValue("cricketscore") == null)
{
startWithWindowsToolStripMenuItem.Checked = false ;
}
else
{
startWithWindowsToolStripMenuItem.Checked = true ;
}
this.Region = new Region(new Rectangle(10, 10, 197, 17));
ToolTip tooltip = new ToolTip();
// MessageBox.Show(" F" + tooltip.AutomaticDelay);
tooltip.AutomaticDelay = 0;
tooltip.InitialDelay = 0;
tooltip.SetToolTip(pictureBox1, " right click for settings, left click to move");
tooltip.SetToolTip(label1, " right click for settings, left click to move");
fetchData();
addContextEntries();
chooseIndia();
updateScore();
// MessageBox.Show(data.GetLength(0).ToString());
//foreach (string s in data)
//{
// Console.WriteLine(s);
//}
timer1.Interval = 20 * 1000;
timer1.Enabled = true;
}
public void addContextEntries()
{
// MessageBox.Show("num- " + numberOfMatches);
List<ToolStripMenuItem> Mylist1 = new List<ToolStripMenuItem>();
for (int i = 0; i < numberOfMatches; i++)
{
Mylist1.Add(new ToolStripMenuItem());
this.contextMenuStrip1.Items.Add(Mylist1[i]);
Mylist1[i].Text = "See Match " + (i + 1) + "'s score";
switch(i)
{
case 0:
Mylist1[i].Click += new System.EventHandler(this.match1);
break;
case 1:
Mylist1[i].Click += new System.EventHandler(this.match2);
break;
case 2:
Mylist1[i].Click += new System.EventHandler(this.match3);
break;
case 3:
Mylist1[i].Click += new System.EventHandler(this.match4);
break;
case 4:
Mylist1[i].Click += new System.EventHandler(this.match5);
break;
}
}
}
public void match1(object sender, EventArgs e)
{
// MessageBox.Show("match 1");
matchToShow = 0;
label1.Text = data[0, 0] + " " + data[0, 1];
}
public void match2(object sender, EventArgs e)
{
// MessageBox.Show("match 2");
matchToShow = 1;
label1.Text = data[1, 0] + " " + data[1, 1];
}
public void match3(object sender, EventArgs e)
{
matchToShow = 2;
label1.Text = data[2, 0] + " " + data[2, 1];
}
public void match4(object sender, EventArgs e)
{
matchToShow = 3;
label1.Text = data[3, 0] + " " + data[3, 1];
}
public void match5(object sender, EventArgs e)
{
matchToShow = 4;
label1.Text = data[4, 0] + " " + data[4, 1];
}
public void chooseIndia()
{
try
{
for (int i = 0; i < data.GetLength(0); i++)
{
// MessageBox.Show("i - " + i);
if (data[i, 3].ToLower().Contains("india"))
{
matchToShow = i;
// MessageBox.Show("i - " + i);
break;
}
}
}
catch (NullReferenceException ne)
{
}
}
public void updateScore()
{
fetchData();
if (update == true)
{
try
{
label1.Text = data[matchToShow, 0] + " " + data[matchToShow, 1];
}
catch (Exception e)
{
}
}
}
public void fetchData()
{
int matchnumber = -1;
numberOfMatches = 0;
WebClient Client = new WebClient();
try
{
Client.DownloadFile("http://synd.cricbuzz.com/score-gadget/gadget-scores-feed.xml", fileToParse);
}
catch (WebException we)
{
// if (we.ToString().ToLower().Contains("connect to"))
// MessageBox.Show("sdf");
label1.Text = "No Internet";
update = false ;
this.Update();
// System.Threading.Thread.Sleep(1000);
}
try
{
XmlTextReader xmlreader0 = new XmlTextReader(fileToParse);
while (xmlreader0.Read())
{
if (xmlreader0.Name.ToString() == "match" && xmlreader0.NodeType == XmlNodeType.Element)
{
++numberOfMatches;
}
}
data = new string[numberOfMatches, 4];
// numberOfMatches = 0;
// MessageBox.Show("matchnumbers - " + numberOfMatches);
// MessageBox.Show("asd");
XmlTextReader xmlreader = new XmlTextReader(fileToParse);
while (xmlreader.Read())
{
// MessageBox.Show("READING");
if (xmlreader.Name.ToString() == "header" && xmlreader.NodeType == XmlNodeType.Element)
{
xmlreader.Read();
data[matchnumber, 0] = xmlreader.Value;
// MessageBox.Show(xmlreader.Value);
}
if (xmlreader.Name == "description" && xmlreader.NodeType == XmlNodeType.Element)
{
// MessageBox.Show(xmlreader.Value);
xmlreader.Read();
// MessageBox.Show("matched - " + xmlreader.Value);
data[matchnumber, 1] = xmlreader.Value;
}
if (xmlreader.Name == "url-text" && xmlreader.NodeType == XmlNodeType.Element)
{
xmlreader.Read();
// MessageBox.Show(xmlreader.Value);
data[matchnumber, 2] = xmlreader.Value;
}
if (xmlreader.Name == "url-link" && xmlreader.NodeType == XmlNodeType.Element)
{
xmlreader.Read();
data[matchnumber, 3] = xmlreader.Value;
}
if (xmlreader.Name.ToString() == "match" && xmlreader.NodeType == XmlNodeType.Element)
{
matchnumber++;
showFullScorecardToolStripMenuItem.Text = "Show full scorecard";
showschedule = true;
update = true;
}
if (xmlreader.Name.ToString() == "nextlive" && xmlreader.NodeType == XmlNodeType.Element)
{
label1.Text = "No current match";
showFullScorecardToolStripMenuItem.Text = "Show Schedule";
showschedule = false;
update = false;
break;
}
}
xmlreader.Close();
xmlreader0.Close();
}
catch (FileNotFoundException fe)
{
// MessageBox.Show("no internet");
}
}
private void timer1_Tick(object sender, EventArgs e)
{
updateScore();
}
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
ReleaseCapture();
SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
}
}
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
ReleaseCapture();
SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
}
}
private void exitToolStripMenuItem_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void switchColrosToolStripMenuItem_Click(object sender, EventArgs e)
{
if (label1.ForeColor == System.Drawing.Color.Black)
label1.ForeColor = System.Drawing.Color.White ;
else
label1.ForeColor = System.Drawing.Color.Black;
}
private void startWithWindowsToolStripMenuItem_Click(object sender, EventArgs e)
{
}
private void startWithWindowsToolStripMenuItem_CheckStateChanged(object sender, EventArgs e)
{
if (startWithWindowsToolStripMenuItem.Checked == true)
{
rkApp.SetValue("cricketscore", Application.ExecutablePath.ToString());
}
else
{
rkApp.DeleteValue("cricketscore", false);
}
}
private void showFullScorecardToolStripMenuItem_Click(object sender, EventArgs e)
{
if (showschedule == true)
System.Diagnostics.Process.Start(data[matchToShow, 3]);
else
System.Diagnostics.Process.Start("http://www.cricbuzz.com/component/cricket_schedule/");
}
private void label1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
ReleaseCapture();
SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
}
}
//public void findNumberOfMatches()
//{
// if (xmlreader.Name.ToString() == "match" && xmlreader.NodeType == XmlNodeType.Element)
// {
// matchnumber++;
// }
//}
}
}
感謝
吞嚥異常導致瘋狂。不要捕捉異常並且什麼都不做,你應該讓它傳播到堆棧中。您可以嘗試通過記錄您獲得的異常來縮小發生的情況,包括使其達到程序頂層(在Program.cs中)的異常。 – 2011-02-27 06:03:38
好的,我會試試這個。謝謝 – 2011-02-27 06:11:11
你還沒有包含最重要的信息。源代碼不是問題,因爲你暗示它在.NET 2下編譯。**你的應用程序沒有運行?這個表單是否顯示出來?您看到什麼消息,事件查看器中包含什麼,您嘗試了哪些其他操作系統? – 2011-02-27 06:48:11