PDA

View Full Version : سوال: مشکل در پاس دادن اطلاعات بین فرم ها



ms-ninja
سه شنبه 06 بهمن 1394, 15:26 عصر
با سلام

من یک برنامه نوشته ام که با روش Entity Framework به بانک متصل می شود

حال مشکل اینجاست که برای ویرایش یک فرم جدا قرار داده ام

اطلاعات را به طور کامل پاس می دهد


edit_bime edit = new edit_bime();
private void ویرایشToolStripMenuItem_Click(object sender, EventArgs e)
{
edit.Show();
int cud = int.Parse(dg_user.CurrentRow.Cells[0].Value.ToString());
db_bime tu = dbm.db_bime.First(c => c.ID == cud);
edit.bname.Text = tu.bime_name;
edit.bprice.Text = tu.bime_price;
}

ولی نمدونم که تو button فرم ویراش چی بنویستم که ذخیره بشه
لطفا راهنمایی کنید
با تشکر

Mahmoud.Afrad
سه شنبه 06 بهمن 1394, 20:48 عصر
نیازی نیست تکست باکسهای فرم ادیت رو پابلیک کنید.
یک پارامتر ورودی برای سازنده فرم ادیت قرار بده و در دکمه ثبت تغییرات، مقادیر تکست باکسها رو در فیلدها ست کنید.

public partial class edit_bime : Form
{
private db_bime _objBime;

public edit_bime(db_bime bime)
{
InitializeComponent();

_objBime = bime;
bname.Text = _objBime.bime_name;
bprice.Text = _objBime.bime_price;
}

private void btnSave_Click(object sender, EventArgs e)
{
_objBime.bime_name = bname.Text;
_objBime.bime_price = bprice.Text;
this.DialogResult = DialogResult.OK;
this.Close();
}
}
در فرم قبلی هم از متد ShowDialog استفاده کنید و بعد عمل ثبت تغییرات

edit_bime edit;

private void ویرایشToolStripMenuItem_Click(object sender, EventArgs e)
{
int cud = int.Parse(dg_user.CurrentRow.Cells[0].Value.ToString());
db_bime tu = dbm.db_bime.FirstOrDefault(c => c.ID == cud);
if (tu != null)
{
edit = new edit_bime(tu);
edit.ShowDialog();
if (edit.DialogResult == DialogResult.OK)
{
dbm.SaveChanges();
}
}
}

Mahmoud.Afrad
سه شنبه 06 بهمن 1394, 21:22 عصر
در صورتی هم که بخواهی از DataBinding کنترل ها استفاده کنید به صورت زیر تغییر بدید

public partial class edit_bime : Form
{
public edit_bime(db_bime bime)
{
InitializeComponent();

bname.DataBindings.Add("Text", bime, "bime_name", false, DataSourceUpdateMode.OnPropertyChanged);
bprice.DataBindings.Add("Text", bime, "bime_price", false, DataSourceUpdateMode.OnPropertyChanged);
}

private void btnSave_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.OK;
this.Close();
}
}
و در جایی که فرم ادیت ایجاد میشه

edit_bime edit;

private void ویرایشToolStripMenuItem_Click(object sender, EventArgs e)
{
int cud = int.Parse(dg_user.CurrentRow.Cells[0].Value.ToString());
db_bime tu = dbm.db_bime.FirstOrDefault(c => c.ID == cud);
if (tu != null)
{
edit = new edit_bime(tu);
edit.ShowDialog();
if (edit.DialogResult != DialogResult.OK)
{
dbm.Entry(tu).State = EntityState.Unchanged;
}
dbm.SaveChanges();
}
}

ms-ninja
چهارشنبه 07 بهمن 1394, 15:15 عصر
با تشکر از شما :بوس:

لطفا این قسمت
یک پارامتر ورودی برای سازنده فرم برای من توضیح دهید:قلب::قلب::قلب:

ms-ninja
چهارشنبه 14 بهمن 1394, 17:41 عصر
با سلام

من در این مورد باز به یک مشکلی خوردم

138800
به (code_meli) گیر میده . من تو دیتا بیس تایپش رو nvchar 50 قرار دادم

نمی دونم این اررور برای چیه؟


کد فرم دیتا گرید



using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Linq;
using System.Windows.Forms;
using Telerik.WinControls;


namespace Matab.bimar
{
public partial class show : Telerik.WinControls.UI.RadForm
{
public show()
{
InitializeComponent();
}
private void sho()
{
dg1.DataSource = dbm.db_bimar.ToList();
// dgw.DataSource = dbm.db_bimar.ToList();
dg1.DataSource = dbm.db_bimar.ToList();
dg1.Columns["code_meli"].HeaderText = "کد ملی";
dg1.Columns["name"].HeaderText = "نام";
dg1.Columns["family"].HeaderText = "نام خانوادگی";
dg1.Columns["bime_name"].HeaderText = "بیمه";
dg1.Columns["birth"].HeaderText = "تاریخ تولد";
dg1.Columns["s_p"].HeaderText = "شماره پرونده";
dg1.Columns["acceptdate"].HeaderText = "ویزیت";
dg1.Columns["phone"].HeaderText = "تلفن";
dg1.Columns["address"].HeaderText = "آدرس";
//-------------------------------------------------
dg1.Columns.Remove("s_bime");
dg1.Columns.Remove("sv_bimar");
dg1.Columns.Remove("email");
dg1.Columns.Remove("birth");
dg1.Columns.Remove("gender");
//************************************************** **********
}


dbmt dbm = new dbmt();


private void show_Load(object sender, EventArgs e)
{

sho();
cs.SelectedIndex=0;


}


private void حذفToolStripMenuItem_Click(object sender, EventArgs e)
{
if (MessageBox.Show("آیا مایل به حذف می باشید ", "توجه", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
string cm =dg1.CurrentRow.Cells[0].Value.ToString();
db_bimar tu = dbm.db_bimar.First(n =>n.code_meli==cm);
dbm.db_bimar.Remove(tu);
dbm.SaveChanges();
dg1.DataSource = dbm.db_bimar.ToList();


}
}


private void radGroupBox1_Click(object sender, EventArgs e)
{


}


private void radTextBox3_TextChanged(object sender, EventArgs e)
{
if (cs.Text == "شماره پرونده")
{
var search = dbm.db_bimar.Where(c => c.s_p.Contains(radTextBox3.Text));
dg1.DataSource = search.ToList();

}
else if (cs.Text == "کد ملی")
{
var search = dbm.db_bimar.Where(c => c.code_meli.Contains(radTextBox3.Text));
dg1.DataSource = search.ToList();



}
else if (cs.Text == "کد ملی")
{
var search = dbm.db_bimar.Where(c => c.family.Contains(radTextBox3.Text));
dg1.DataSource = search.ToList();
}
else if (cs.Text == null)
{
sho();
}






}
edit edit;
private void ویرایشToolStripMenuItem_Click(object sender, EventArgs e)
{
int cud =int.Parse(dg1.CurrentRow.Cells[0].Value.ToString());
db_bimar tu = dbm.db_bimar.FirstOrDefault(c => c.ID == cud);
if (tu != null)
{
edit = new edit(tu);
edit.ShowDialog();
if (edit.DialogResult == DialogResult.OK)
{
dbm.SaveChanges();


}


sho();
}
}
}
}





کد فرم ویرایش

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Telerik.WinControls;


namespace Matab.bimar
{
public partial class edit : Telerik.WinControls.UI.RadForm
{
private db_bimar _objBimar;
public edit(db_bimar bimar)
{
InitializeComponent();


_objBimar = bimar;
sp.Text=_objBimar.s_p;
name.Text = _objBimar.name;
family.Text = _objBimar.family;
nbime.Text = _objBimar.bime_name;
sbime.Text = _objBimar.s_bime;
code_meli.Text = _objBimar.code_meli;
bith.Text = _objBimar.birth;
gr.Text=_objBimar.gender;
tel.Text=_objBimar.phone;
add.Text=_objBimar.address;
em.Text=_objBimar.Email;
sv.Text=_objBimar.sv_bimar;
}


private void radButton1_Click(object sender, EventArgs e)
{
_objBimar.s_p = sp.Text;
_objBimar.name = name.Text;
_objBimar.family = family.Text;
_objBimar.bime_name = nbime.Text;
_objBimar.s_bime = sbime.Text;
_objBimar.code_meli = code_meli.Text;
_objBimar.birth = bith.Text;
_objBimar.gender = gr.Text;
_objBimar.phone = tel.Text;
_objBimar.address = add.Text;
_objBimar.Email = em.Text;
_objBimar.sv_bimar = sv.Text;
this.DialogResult = DialogResult.OK;
this.Close();

}


private void edit_Load(object sender, EventArgs e)
{


}


private void radGroupBox3_Click(object sender, EventArgs e)
{


}


private void bth_TextChanged(object sender, EventArgs e)
{


}


private void radGroupBox2_Click(object sender, EventArgs e)
{


}
}
}

پیام حیاتی
جمعه 08 مرداد 1395, 01:12 صبح
سلام
می خوام مقدار وارد شده در txtUser رآ به فرم user انتقال بدم ، در مثال های موجود در نت جستجو کردم ، برای دکمه فرم اول این کد رو قرار دادم :

User frmUser = new User(txtUser.Text);
frmUser.Show();

که با خطا مواجه میشم :
141730

در قسمت کلاس فرم user هم این کد را قرار دادم که خطای زیر را دارم :

141731

پیام حیاتی
جمعه 08 مرداد 1395, 02:47 صبح
بنده زمانی مشکل را مطرح می کنم که در جستجو و فیلم های آموزشی یوتیوب به نتیجه مطلوب نرسم.
خوشبختانه دوستی کمک کرد و مشکل برطرف شد.
موفق باشید.

Mahmoud.Afrad
جمعه 08 مرداد 1395, 04:30 صبح
مشکل در پاس دادن اطلاعات بین فرم ها (http://barnamenevis.org/showthread.php?517513-%D9%85%D8%B4%DA%A9%D9%84-%D8%AF%D8%B1-%D9%BE%D8%A7%D8%B3-%D8%AF%D8%A7%D8%AF%D9%86-%D8%A7%D8%B7%D9%84%D8%A7%D8%B9%D8%A7%D8%AA-%D8%A8%DB%8C%D9%86-%D9%81%D8%B1%D9%85-%D9%87%D8%A7)
سوال در مورد ارسال یک list به فرم بعدی - انتقال اطلاعات بین دو فرم (http://barnamenevis.org/showthread.php?387110-%D8%B3%D9%88%D8%A7%D9%84-%D8%AF%D8%B1-%D9%85%D9%88%D8%B1%D8%AF-%D8%A7%D8%B1%D8%B3%D8%A7%D9%84-%DB%8C%DA%A9-list-%D8%A8%D9%87-%D9%81%D8%B1%D9%85-%D8%A8%D8%B9%D8%AF%DB%8C-%D8%A7%D9%86%D8%AA%D9%82%D8%A7%D9%84-%D8%A7%D8%B7%D9%84%D8%A7%D8%B9%D8%A7%D8%AA-%D8%A8%DB%8C%D9%86-%D8%AF%D9%88-%D9%81%D8%B1%D9%85)
ارسال مقادیر بین فرم ها (http://barnamenevis.org/showthread.php?384440-%D8%A7%D8%B1%D8%B3%D8%A7%D9%84-%D9%85%D9%82%D8%A7%D8%AF%DB%8C%D8%B1-%D8%A8%DB%8C%D9%86-%D9%81%D8%B1%D9%85-%D9%87%D8%A7)
انتقال آرایه بین دو فرم (http://barnamenevis.org/showthread.php?268584-%D8%A7%D9%86%D8%AA%D9%82%D8%A7%D9%84-%D8%A2%D8%B1%D8%A7%DB%8C%D9%87-%D8%A8%DB%8C%D9%86-%D8%AF%D9%88-%D9%81%D8%B1%D9%85)
انتقال یک مقدار بین دو صفحه (http://barnamenevis.org/showthread.php?265270-%D8%A7%D9%86%D8%AA%D9%82%D8%A7%D9%84-%DB%8C%DA%A9-%D9%85%D9%82%D8%AF%D8%A7%D8%B1-%D8%A8%DB%8C%D9%86-%D8%AF%D9%88-%D8%B5%D9%81%D8%AD%D9%87)
انتقال محتویات textbox به textbox دیگر - انتقال اطلاعات بین دو فرم (http://barnamenevis.org/showthread.php?256469-%D8%A7%D9%86%D8%AA%D9%82%D8%A7%D9%84-%D9%85%D8%AD%D8%AA%D9%88%DB%8C%D8%A7%D8%AA-textbox-%D8%A8%D9%87-textbox-%D8%AF%DB%8C%DA%AF%D8%B1-%D8%A7%D9%86%D8%AA%D9%82%D8%A7%D9%84-%D8%A7%D8%B7%D9%84%D8%A7%D8%B9%D8%A7%D8%AA-%D8%A8%DB%8C%D9%86-%D8%AF%D9%88-%D9%81%D8%B1%D9%85)
انتقال مقدار یک فیلد از یک Form به Form دیگه (http://barnamenevis.org/showthread.php?244734-%D8%A7%D9%86%D8%AA%D9%82%D8%A7%D9%84-%D9%85%D9%82%D8%AF%D8%A7%D8%B1-%DB%8C%DA%A9-%D9%81%DB%8C%D9%84%D8%AF-%D8%A7%D8%B2-%DB%8C%DA%A9-Form-%D8%A8%D9%87-Form-%D8%AF%DB%8C%DA%AF%D9%87)
انتقال اطلاعات بین دو فرم (http://barnamenevis.org/showthread.php?249149-%D8%A7%D9%86%D8%AA%D9%82%D8%A7%D9%84-%D8%A7%D8%B7%D9%84%D8%A7%D8%B9%D8%A7%D8%AA-%D8%A8%DB%8C%D9%86-%D8%AF%D9%88-%D9%81%D8%B1%D9%85)
انتقال مقادیر بین دو فرم (http://barnamenevis.org/showthread.php?248907-%D8%A7%D9%86%D8%AA%D9%82%D8%A7%D9%84-%D9%85%D9%82%D8%A7%D8%AF%DB%8C%D8%B1-%D8%A8%DB%8C%D9%86-%D8%AF%D9%88-%D9%81%D8%B1%D9%85)
مشکل در انتقال اطلاعات بین دو فرم ویندوزی (http://barnamenevis.org/showthread.php?162069-%D9%85%D8%B4%DA%A9%D9%84-%D8%AF%D8%B1-%D8%A7%D9%86%D8%AA%D9%82%D8%A7%D9%84-%D8%A7%D8%B7%D9%84%D8%A7%D8%B9%D8%A7%D8%AA-%D8%A8%DB%8C%D9%86-%D8%AF%D9%88-%D9%81%D8%B1%D9%85-%D9%88%DB%8C%D9%86%D8%AF%D9%88%D8%B2%DB%8C)
نحوه ی ارتباط و پاس كردن مقادير ميان چند فرم ويندوز (http://barnamenevis.org/showthread.php?91138-%D9%86%D8%AD%D9%88%D9%87-%DB%8C-%D8%A7%D8%B1%D8%AA%D8%A8%D8%A7%D8%B7-%D9%88-%D9%BE%D8%A7%D8%B3-%D9%83%D8%B1%D8%AF%D9%86-%D9%85%D9%82%D8%A7%D8%AF%D9%8A%D8%B1-%D9%85%D9%8A%D8%A7%D9%86-%DA%86%D9%86%D8%AF-%D9%81%D8%B1%D9%85-%D9%88%D9%8A%D9%86%D8%AF%D9%88%D8%B2)
...........

javadghorbani27
جمعه 08 مرداد 1395, 12:16 عصر
private void button1_Click(object sender, EventArgs e)
{
frmuser f = new frmuser();
f.Text = textBox1.Text;
f.ShowDialog();
}