ايمن ميلاد نشر منذ 12 ساعة أرسل تقرير نشر منذ 12 ساعة السلام عليكم لماذا عند الضغط علي انتر تظهر بيانات في داتا قريد 4 ولكن عند اضافة صنف من جديد يظهر اخير ولا يحتفظ بالقديم ممكن حل مشكلة if (e.KeyCode == Keys.Enter) { ff.dataGridView4.Rows.Add(label2.Text,textBox1.Text); ff.ShowDialog(); } 1 اقتباس
0 محمد_عاطف نشر منذ 11 ساعة أرسل تقرير نشر منذ 11 ساعة وعليكم السلام ورحمة الله وبركاته. في كل مرة تضغط فيها على Enter يتم تنفيذ السطر ff.ShowDialog()، أي يتم فتح الفورم ff من جديد وبما أن ShowDialog() يفتح النموذج كنافذة جديدة مستقلة فعند كل ضغطة إنتر يتم إنشاء نسخة جديدة من الفورم أو إعادة تهيئته وبالتالي يفقد البيانات القديمة في dataGridView4. والحل يجب أن تجعل الفورم ff مفتوح أو محفوظ مسبقا في الذاكرة ثم فقط تضيف الصف الجديد دون إعادة فتحه. فمثلا لنقوم بفتح الفورم مرة واحدة فقط Form4 ff = new Form4(); // أنشئه خارج الحدث، مثلاً في أعلى الكود أو في ال constructor private void textBox1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { ff.dataGridView4.Rows.Add(label2.Text, textBox1.Text); ff.Show(); // أو Show() بدلاً من ShowDialog() حتى لا يوقف التنفيذ } } أما إذا كنت تحتاج ShowDialog() لسبب معين مثل إغلاقه بعد كل إدخال فيجب أن تحفظ البيانات في متغير أو قاعدة بيانات أو List مؤقتة ثم تعيد تحميلها. List<string[]> items = new List<string[]>(); private void textBox1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { items.Add(new string[] { label2.Text, textBox1.Text }); Form4 ff = new Form4(); foreach (var row in items) { ff.dataGridView4.Rows.Add(row); } ff.ShowDialog(); } } اقتباس
0 ايمن ميلاد نشر منذ 11 ساعة الكاتب أرسل تقرير نشر منذ 11 ساعة (معدل) نفدت خطوة واحد لزالت نفس مشكلة يضيف صنف ثم يختفي قديم تم التعديل في منذ 10 ساعة بواسطة ايمن ميلاد اقتباس
السؤال
ايمن ميلاد
السلام عليكم لماذا عند الضغط علي انتر تظهر بيانات في داتا قريد 4 ولكن عند اضافة صنف من جديد يظهر اخير ولا يحتفظ بالقديم ممكن حل مشكلة
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.