سؤال

ولدي مشكلة مع بيان الاستمرار في بلدي C # حلقة Foreach.

وأريد أن تحقق ما إذا كان هناك خلية فارغة في داتاغريدفيف، وإذا كان الأمر كذلك، ثم انتقل طباعة قيمة من والاستمرار في التحقق من الخلية التالية.

ومساعدة بتقدير كبير.

وهنا هو رمز:

foreach (DataGridViewRow row in this.dataGridView1.Rows)
{                            
    foreach (DataGridViewCell cell in row.Cells)
    {
        if (cell.Size.IsEmpty)
        {
            continue;
        }
        MessageBox.Show(cell.Value.ToString());
    }
}
هل كانت مفيدة؟

المحلول

حسنا، كنت التحقق حاليا ما إذا كانت الخلية <م> حجم هو صفر. في الشبكة، كل خلية في عمود له نفس العرض وكل خلية في صف واحد لديه نفس الارتفاع (عادة، على أي حال).

وأنت تريد أن تكون التدقيق على أساس <م> قيمة للخلية. على سبيل المثال:

if (cell.Value == null || cell.Value.Equals(""))
{
    continue;
}

والقرص هذا لأي بيانات أخرى من القيم "فارغة" ان كنت مهتما في حالة وجود الكثير، قد ترغب في إرسال طريقة محددة لهذا، والذي يطلق عليه في الاختيار:.

if (IsEmptyValue(cell.Value))
{
    continue;
}

نصائح أخرى

وأنت لا تحتاج إلى استخدام مواصلة الكلمة هنا، هل يمكن أن مجرد قيام بذلك:

foreach (DataGridViewRow row in this.dataGridView1.Rows)
{                            
    foreach (DataGridViewCell cell in row.Cells)
    {
        if (!cell.Size.IsEmpty) MessageBox.Show(cell.Value.ToString()); // note the ! operator
    }
}

وكما كنت التحقق ما إذا كان <م> حجم للخلية فارغة. هل هذا حقا ما كنت تريد أن تفعل؟

ما الأخطاء التي تحصل عليها؟

ولا ينبغي لك أن التحقق إذا قيمة الخلية فارغة ليس حجم؟

if(String.IsNullOrEmpty(cell.Value.ToString()))
    continue;

وأريد أن قراءة الخلية الوحيدة [1] البيانات ... Olny الحصول

foreach (DataGridViewRow row in this.dataGridView1.Rows)
{                            
    foreach (DataGridViewCell cell in row.Cells[1])
    {
       if (cell[1].Value == null || cell.Value.Equals(""))
{
    continue;
}

        MessageBox.Show(cell[1].Value.ToString());
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top