مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

amir.zh

عضویت از 1394/06/19

ارتباط 2 فرم در سی شارپ

  • پنجشنبه 19 شهریور 1394
  • 17:29
تشکر میکنم

من یک برنامه دفترچه تلفن درست کردم

که 2 تا فرم داره

فرم 1 = فقط دیتا گرید ویو هست

و فرم 2 = صفحه ورود اطلاعات

سوالم اینه که

وقتی توی فرم 2 اطلاعاتم رو ثبت میکنم همون لحظه توی دیتا گرید ویو نمیفته

در حالی که کوری اپدیت دیتا گرید ویو رو توی فرم اولم نوشتم (وثتی از صفحه اول اطلاعات ثبت میکنم مشکلی نیست و همون لحظه ثبت میشه و آپدیت میشه گرید ویو)

منو راهنمایی بکنید

 

پاسخ های این پرسش

تعداد پاسخ ها : 17 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • پنجشنبه 19 شهریور 1394
  • 17:52

میتونید فرم دوم را ShowDialog کنید و بعد از دستور نمایش فرم دوم گرید را Bind کنید

Fprm2 frm2=new Form2();
frm2.showdialog();
//دستور لود مجدد گرید

 

کاربر سایت

amir.zh

عضویت از 1394/06/19

  • پنجشنبه 19 شهریور 1394
  • 18:52

اصلا وقتی که توی فرم 2 اسمی از دیتاگرید ویو میارم خط قرمز زیرش میکشه

یعنی شیء دیتاگرید ویو چون توی فرم 2 نیست و توی فرم اولم هست قبول نمیکنه

اینم دستور لود گرید ویو هست ! البته با پروسیجر

private  void showdgw()
        }
            SqlDataAdapter adp = new SqlDataAdapter("showdgw", con);
            DataTable dt = new DataTable();
            adp.Fill(dt);

{

 

کاربر سایت

amir.zh

عضویت از 1394/06/19

  • پنجشنبه 19 شهریور 1394
  • 20:10

اصلا این مشکل من حل نمیشه چرا؟

کاربر سایت

amir.zh

عضویت از 1394/06/19

  • پنجشنبه 19 شهریور 1394
  • 22:50

مدیر محترم سایت لطفاً بنده رو راهنمایی بکنید

باتشکر

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • جمعه 20 شهریور 1394
  • 12:38

ببینید دوست من شما دسترسی به اجزا فرم زیر ندارید مگر که اون رو public کنید

میتونید خاصیت modifiers گرید رو Public کنید

بعد از فرم دوم بهش دسترسی دارید

کاربر سایت

amir.zh

عضویت از 1394/06/19

  • جمعه 20 شهریور 1394
  • 13:31

خاصیت دیتاگرید ویو رو توی فرم اولم به Public تغییر دادم

اما بازم توی قسمت کد نویسی فرم دوم اثری ازش نمیاد

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • جمعه 20 شهریور 1394
  • 13:44

باید ابتدا از روی فرم اول New بسازید و نام نمونه به گرید داخلش دسترسی دارید

 

((Form1)f).dataGridView1.Rows.Add(row);   

 

Form1 فرم زیرین هست

کاربر سایت

amir.zh

عضویت از 1394/06/19

  • جمعه 20 شهریور 1394
  • 14:19

بازم نشد

لطفا یک نمونه برنامه بذارید

من واقعا توی این مسئله خیلی گیر کردم

خیلی مدته اصلا نمیتونم کارکنم

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • جمعه 20 شهریور 1394
  • 14:41

کدتون رو ضمیمه کنید تا براتون درست کنم

کاربر سایت

amir.zh

عضویت از 1394/06/19

  • جمعه 20 شهریور 1394
  • 14:47

دستور ثبت کامله و مشکلی نیست

وقت مشکل اینه  که اصلا نمیتونم اثری از دیتا گرید ویو رو توی فرم 2 بیارم

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • جمعه 20 شهریور 1394
  • 15:21

شما عملیات به روز رسانی را همون فرم اول انجام بدید

بعد از ثبت کد زیر را در فرم دوم بنویسید

DialogResult=DialogResult.Ok;

در فرم اول به شکل زیر فرم دوم را نمایش دهید و بعد گرید را به روز رسانی کنید

form2 f2=new form2();
if(f2.ShowDialog()==DialogResult.Ok)
{

BindGrid();//تابع بایند گرید
}

 

کاربر سایت

amir.zh

عضویت از 1394/06/19

  • جمعه 20 شهریور 1394
  • 17:42

نشد که نشد

خواهشاً اگر امکان داره یک ویدیوی آموزشی درست کننید

ممنون میشم واقعا چون خیلی گیر کردم

 

کاربر سایت

amir.zh

عضویت از 1394/06/19

  • شنبه 21 شهریور 1394
  • 11:40

اینم پروژم

مرسی بابت همه زحمت ها

فایل های ضمیمه

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • شنبه 21 شهریور 1394
  • 13:53

کد هاتون رو اصلاح کردم

کد کلید ثبت در فرم دوم را به شکل زیر تغییر دهید

        private void btn_Save_Click(object sender, EventArgs e)
        {
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = con;
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.CommandText = "inserttbl";

            cmd.Parameters.Add("@id", SqlDbType.Char, 3).Value = txt_Code.Text;
            cmd.Parameters.Add("@name", SqlDbType.NVarChar, 50).Value = txt_Name.Text;
            cmd.Parameters.Add("@family", SqlDbType.NVarChar, 50).Value = txt_Family.Text;
            cmd.Parameters.Add("@mobile1", SqlDbType.NVarChar, 50).Value = txt_M1.Text;
            cmd.Parameters.Add("@mobile2", SqlDbType.NVarChar, 50).Value = txt_M2.Text;
            cmd.Parameters.Add("@worktell", SqlDbType.NVarChar, 50).Value = txt_Wtell.Text;
            cmd.Parameters.Add("@R", SqlDbType.Int).Direction = ParameterDirection.ReturnValue;

            con.Open();
            cmd.ExecuteNonQuery();
            if (cmd.Parameters["@R"].Value.ToString() == "0")
            {
                MessageBox.Show("ثبت نشد", "خطا", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                MessageBox.Show("ثبت شد","اطلاعات",MessageBoxButtons.OK,MessageBoxIcon.Information);
            }
            con.Close();

            DialogResult = DialogResult.OK;




        }

 

در فرم اول کد باز کردم فرم دوم را به شکل زیر تغییر دهید

        private void ثبتجدیدToolStripMenuItem_Click(object sender, EventArgs e)
        {
            frm_Insert f2 = new frm_Insert();
            if (f2.ShowDialog() == DialogResult.OK)
            {
                showdgw();
            }
        }

 

کاربر سایت

amir.zh

عضویت از 1394/06/19

  • شنبه 21 شهریور 1394
  • 14:46

مهندس واقعاً بسیار ممنونم

خیلی خوشحال شدم

ببخشید برای حذف هم باید همینجوری انجام داد؟ یعنی بعد از دستور حذف اینهارو اضافه کنم با کمی تغییر!؟

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • شنبه 21 شهریور 1394
  • 14:52

خواهش میکنم دوست من

بله باید به همین صورت عمل کنید

کاربر سایت

amir.zh

عضویت از 1394/06/19

  • پنجشنبه 2 مهر 1394
  • 22:45

سلام

این دستور بطور صحیح اجرا شد

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

چجوری میشه که صفحه بسته نشه؟

بابت همه زحمت ها ممنون

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)