اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

وعليكم السلام ورحمة الله وبركاته.

في كل مرة تضغط فيها على 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();
    }
}

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...