2016-03-21 23 views
0

Bu bir olay sınıfının bir yöntemi çağırmak için benim sınıftırnasıl formda

Hata göstermiyor ve program çalışıyor ancak kod çalışmıyor ve metin kutularım hala devre dışı.

Nasıl düzelttiğimi bilmiyorum, cevap için çok teşekkürler.

cevap

1

sen Çünkü böylece, statik yöntemde Form1 frm = new Form1(); yeniden başlatılması olduğunu her arama frm yılında farklı olacak. Bu dosya ayrı bir sınıf olduğundan daha iyi bir seçenek nesneyi geçirmektir. Yani yöntem imzası gibi olacak:

public static void LactatingCow(Form1 frm) 
    { 
     frm.CowAgetxtBox.Enabled = true; 
     frm.CowWeighttxtBox.Enabled = true; 
     frm.DaysPregtxtBox.Enabled = true; 
     frm.BCStxtBox.Enabled = true; 
     frm.DaysInMilktxtBox.Enabled = true; 
     frm.LactationNumbertxtBox.Enabled = true; 
     frm.FirstCalftxtBox.Enabled = true; 
     frm.CalfInttxtBox.Enabled = true; 
     frm.ADGpanel.Visible = false; 
     frm.CalfVarGroupBox.Enabled = false; 
    } 

Ve düğme tıklama olacaktır:

private void CowTypeSelect_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     if (CowTypeSelect.SelectedIndex == 0) 
     { 
      CowTypeDefaults.LactatingCow(this); 
     } 
    } 
0

Her seferinde Form1 yeni bir örnek oluşturuyorsunuz. size yönteme referans olarak formunuzun örneğini iletin:

public static void LactatingCow(Form1 form) 
{ 
    form.CowAgetxtBox.Enabled = true; 
    form.CowWeighttxtBox.Enabled = true; 
    form.DaysPregtxtBox.Enabled = true; 
    form.BCStxtBox.Enabled = true; 
    form.DaysInMilktxtBox.Enabled = true; 
    form.LactationNumbertxtBox.Enabled = true; 
    form.FirstCalftxtBox.Enabled = true; 
    form.CalfInttxtBox.Enabled = true; 
    form.ADGpanel.Visible = false; 
    form.CalfVarGroupBox.Enabled = false; 
} 

ve yanı this kullanarak çağrı:

private void CowTypeSelect_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    if (CowTypeSelect.SelectedIndex == 0) 
     CowTypeDefaults.LactatingCow(this); 
} 
+0

'CowTypeDefaults' arkadaki kodda olmayan ayrı bir sınıftır. Yani bu sizin cevabınız için –

+0

tankları yardımcı olmayabilir, ben söyledim gibi yaparım ama hata gösterir Hata \t CS0026 \t Anahtar Kelime 'this' bir statik özellik, statik yöntem veya statik alan başlatıcısı geçerli değil –

+0

Açık değil, ama Doğru gözüküyorsun .. – Shaharyar

0

Size soru slove bir temsilci tanımlamak düşünüyorum. Hedef yönteminiz üzerinde bir temsilci tabanı tanımlayın ve bu Delegenin, Formda geçici olarak Degegate geçici adlı bir temsilci olduğunu bildirin. Form frm = new Form() olduğunda; frm.Delegate hedef yöntemini kullanın, sonra bu sınıf temsilcisini, ihtiyacınız olan sınıf Formunun olayında çalıştırın. Ben mobelphone soruyu cevap ediyorum, bu yüzden kod stilini değiştiremiyorum, üzgünüm

İlgili konular