mehran788
شنبه 04 مهر 1394, 06:50 صبح
سلام. خسته نباشید
من یه برنامه نوشتم و از اون Setup ساختم و روی سیستم نصب کردم و داشتم ازش استفاده می کردم. ولی به مرور که حجم داده برنامه بالا رفت گاهی خطای Out Of Memory می داد و از برنامه خارج می شد تا اینکه الان دیگه برنامه رو که اجرا می کنم این خطا رو میده. من Form_Load اومدم داده هام رو از بانک فراخوانی کردم و با کنترل های رانتایم به رو فرمم انداختم. الان نمیدونم مشکل از کجاست حتی خواستم از خود ویژوال استودیو برای خطایابی استفاده کنم که تو اون لحظه از برنامه خارج میشه و نشون نمیده خطا مال کدوم خطه. لطفا کمک کنین چطوری خطایابی کنم؟ ممنون
اینم کد Form_Load:
if (lbtype.Text == "Contact") lbname.Text = "Contact Name";
if (lbtype.Text == "Type1")
lbname.Text = "Type1 ID";
if (lbtype.Text == "Type2")
lbname.Text = "Type2 ID";
if (lbtype.Text == "All")
lbname.Text = "All";
SqlCommand com = new SqlCommand();
SqlConnection con=new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\mydata.mdf;Integrated Security=True;User Instance=True");
com.Connection = con;
SqlDataReader dr;
if (lbname.Text == "Type2 ID")
com.CommandText = "select * from tblcontacts where Type='Type2'";
if (lbname.Text == "Contact Name")
com.CommandText = "select * from tblcontacts where Type='Contact'";
if (lbname.Text == "Type1 ID")
com.CommandText = "select * from tblcontacts where Type='Type1'";
if (lbname.Text == "All")
com.CommandText = "select * from tblcontacts";
con.Open();
dr = com.ExecuteReader();
string path = @"D:\Userpics";
int read = 0;
int readnum = 1;
while (dr.Read())
{
Panel pnl = new Panel();
pnl.Location = new Point(10, read + 10);
pnl.Width=355;pnl.Height=60;
pnl.BackColor = Color.IndianRed;
pnl.Name = "Panel" + Convert.ToString(readnum);
pnl.Tag = readnum;
panelmain.Controls.Add(pnl);
read = read + 70;
pnl.Click += new EventHandler(pnl_Click);
pnl.MouseMove+=new MouseEventHandler(pnl_MouseMove);
Label lb = new Label();
lb.Text = dr["Code"].ToString();
lb.Width = 10; lb.Height = 10;
lb.Location = new Point(10, 10);
lb.Visible = false;
pnl.Controls.Add(lb);
lb.Name = "lbcode" + Convert.ToString(readnum);
PictureBox pcb = new PictureBox();
pcb.SizeMode = PictureBoxSizeMode.Zoom;
pcb.Width = 50; pcb.Height = 50;
pcb.Location=new Point(5,5);
pnl.Controls.Add(pcb);
pcb.Image = Image.FromFile(path + @"\" + dr["Picture"].ToString());
pcb.Name = "pcb" + Convert.ToString(readnum);
pcb.Tag = readnum;
pcb.Click +=new EventHandler(pcb_Click);
pcb.MouseMove+=new MouseEventHandler(pcb_MouseMove);
TableLayoutPanel tlp = new TableLayoutPanel();
tlp.Name = "tlp" + Convert.ToString(readnum);
tlp.Tag = readnum;
tlp.RowCount = 1; tlp.ColumnCount = 3;
tlp.ColumnStyles.Add(new ColumnStyle(SizeType.Percent,0));
tlp.ColumnStyles.Add(new ColumnStyle(SizeType.AutoSize));
tlp.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50));
tlp.RowStyles.Add(new RowStyle(SizeType.Absolute, 50));
tlp.Controls.Add(new Label() { Text = dr["Name"].ToString() }, 1, 0);
tlp.Location = new Point(60, 20);
tlp.Click += new EventHandler(tlp_Click);
tlp.MouseMove+=new MouseEventHandler(tlp_MouseMove);
pnl.Controls.Add(tlp);
PictureBox pcb1 = new PictureBox();
pcb1.SizeMode = PictureBoxSizeMode.Zoom;
pcb1.Name = "pcblogo" + Convert.ToString(readnum);
pcb1.Tag = readnum;
pcb1.Width = 50; pcb.Height = 50;
pcb1.Location = new Point(300, 5);
if (dr["Type"].ToString() == "Type2")
pcb1.Image = Properties.Resources.Type2;
if (dr["Type"].ToString() == "Contact")
pcb1.Image = Properties.Resources.Contact;
if (dr["Type"].ToString() == "Type1")
pcb1.Image = Properties.Resources.Type1;
pcb1.Click +=new EventHandler(pcb1_Click);
pcb1.MouseMove+=new MouseEventHandler(pcb1_MouseMove);
pnl.Controls.Add(pcb1);
readnum++;
من یه برنامه نوشتم و از اون Setup ساختم و روی سیستم نصب کردم و داشتم ازش استفاده می کردم. ولی به مرور که حجم داده برنامه بالا رفت گاهی خطای Out Of Memory می داد و از برنامه خارج می شد تا اینکه الان دیگه برنامه رو که اجرا می کنم این خطا رو میده. من Form_Load اومدم داده هام رو از بانک فراخوانی کردم و با کنترل های رانتایم به رو فرمم انداختم. الان نمیدونم مشکل از کجاست حتی خواستم از خود ویژوال استودیو برای خطایابی استفاده کنم که تو اون لحظه از برنامه خارج میشه و نشون نمیده خطا مال کدوم خطه. لطفا کمک کنین چطوری خطایابی کنم؟ ممنون
اینم کد Form_Load:
if (lbtype.Text == "Contact") lbname.Text = "Contact Name";
if (lbtype.Text == "Type1")
lbname.Text = "Type1 ID";
if (lbtype.Text == "Type2")
lbname.Text = "Type2 ID";
if (lbtype.Text == "All")
lbname.Text = "All";
SqlCommand com = new SqlCommand();
SqlConnection con=new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\mydata.mdf;Integrated Security=True;User Instance=True");
com.Connection = con;
SqlDataReader dr;
if (lbname.Text == "Type2 ID")
com.CommandText = "select * from tblcontacts where Type='Type2'";
if (lbname.Text == "Contact Name")
com.CommandText = "select * from tblcontacts where Type='Contact'";
if (lbname.Text == "Type1 ID")
com.CommandText = "select * from tblcontacts where Type='Type1'";
if (lbname.Text == "All")
com.CommandText = "select * from tblcontacts";
con.Open();
dr = com.ExecuteReader();
string path = @"D:\Userpics";
int read = 0;
int readnum = 1;
while (dr.Read())
{
Panel pnl = new Panel();
pnl.Location = new Point(10, read + 10);
pnl.Width=355;pnl.Height=60;
pnl.BackColor = Color.IndianRed;
pnl.Name = "Panel" + Convert.ToString(readnum);
pnl.Tag = readnum;
panelmain.Controls.Add(pnl);
read = read + 70;
pnl.Click += new EventHandler(pnl_Click);
pnl.MouseMove+=new MouseEventHandler(pnl_MouseMove);
Label lb = new Label();
lb.Text = dr["Code"].ToString();
lb.Width = 10; lb.Height = 10;
lb.Location = new Point(10, 10);
lb.Visible = false;
pnl.Controls.Add(lb);
lb.Name = "lbcode" + Convert.ToString(readnum);
PictureBox pcb = new PictureBox();
pcb.SizeMode = PictureBoxSizeMode.Zoom;
pcb.Width = 50; pcb.Height = 50;
pcb.Location=new Point(5,5);
pnl.Controls.Add(pcb);
pcb.Image = Image.FromFile(path + @"\" + dr["Picture"].ToString());
pcb.Name = "pcb" + Convert.ToString(readnum);
pcb.Tag = readnum;
pcb.Click +=new EventHandler(pcb_Click);
pcb.MouseMove+=new MouseEventHandler(pcb_MouseMove);
TableLayoutPanel tlp = new TableLayoutPanel();
tlp.Name = "tlp" + Convert.ToString(readnum);
tlp.Tag = readnum;
tlp.RowCount = 1; tlp.ColumnCount = 3;
tlp.ColumnStyles.Add(new ColumnStyle(SizeType.Percent,0));
tlp.ColumnStyles.Add(new ColumnStyle(SizeType.AutoSize));
tlp.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50));
tlp.RowStyles.Add(new RowStyle(SizeType.Absolute, 50));
tlp.Controls.Add(new Label() { Text = dr["Name"].ToString() }, 1, 0);
tlp.Location = new Point(60, 20);
tlp.Click += new EventHandler(tlp_Click);
tlp.MouseMove+=new MouseEventHandler(tlp_MouseMove);
pnl.Controls.Add(tlp);
PictureBox pcb1 = new PictureBox();
pcb1.SizeMode = PictureBoxSizeMode.Zoom;
pcb1.Name = "pcblogo" + Convert.ToString(readnum);
pcb1.Tag = readnum;
pcb1.Width = 50; pcb.Height = 50;
pcb1.Location = new Point(300, 5);
if (dr["Type"].ToString() == "Type2")
pcb1.Image = Properties.Resources.Type2;
if (dr["Type"].ToString() == "Contact")
pcb1.Image = Properties.Resources.Contact;
if (dr["Type"].ToString() == "Type1")
pcb1.Image = Properties.Resources.Type1;
pcb1.Click +=new EventHandler(pcb1_Click);
pcb1.MouseMove+=new MouseEventHandler(pcb1_MouseMove);
pnl.Controls.Add(pcb1);
readnum++;