2009-03-02 30 views
1

Kullanıcı denetiminin genel yöntemini sayfa içinden nasıl çağırabiliriz?Kullanıcı denetimi içindeki genel yöntemler C# .net

Denetim, sayfadaki OnInit içinde dinamik olarak yüklüyor. Bazı nedenlerden dolayı, yöntemin, herkese açık olmasına rağmen var olmadığını belirten bir yapı hatası alıyorum. Kullanıcı kontrollerinin tüm zorluklara değmeyeceğini düşünmeye başlıyor.

+0

@gnomixa: Aramayı nasıl yapıyorsunuz? Bir nesne nesnesi mi? Dinamik olarak yaratıyorsanız, bu bana yansımayı çığlık atıyor, bu durumda yöntem, yansıtılmış bir arabirimde (temel sınıf veya arabirim) olmadıkça, yansıma yoluyla da yönteme çağrı yapmanız gerekiyor. – casperOne

cevap

5

ettin

Control fracTemplateCtrl = 
    (FracTemplateCtrl)LoadControl("FracTemplateCtrl.ascx") 
fracTemplateCtrl.TestMethod(); 

Eğer fracTemplateCtrl is, bir FracTemplateCtrl olarak ilan böylece görsel stüdyo bir TestMethod() sahip olduğunu bildiği

FracTemplateCtrl fracTemplateCtrl = 
    (FracTemplateCtrl)LoadControl("FracTemplateCtrl.ascx") 
fracTemplateCtrl.TestMethod(); 

Not söylemek gerektiğini söyledi. Görsel stüdyo Control olarak ilan edildiğinde, görsel stüdyo bu varsayımı yapamaz.

+0

@gnomixa: Sorun değil. Cevabınızı çok daha hızlı bir şekilde alacağınızı unutmayın. ] –

1

Kullanıcı Denetimi doğru türüne mi döküyorsunuz?

1

Örnek kod olmadan kesin olarak söylemek zor, ancak tahmininizi UserControl uygulamasına özel denetiminizin belirli türüne göndermeniz gerektiğini tahmin ediyorum. senin UserControl türünde "PersonControl" ise, örneğin, daha sonra kod aşağıdaki gibi görünecektir: sınıf UserControl devralmakta

PersonControl ctl = (PersonControl)LoadControl("PersonControl.ascx"); 
ctl.DoCustomMethod(); 
+0

Yayınlamayı denedim, ancak bu çalışmadı: Kontrol fracTemplateCtrl = (FracTemplateCtrl) LoadControl ("FracTemplateCtrl.ascx"); Form.Controls.Add (fracTemplateCtrl); Response.Write (fracTemplateCtrl.TestMethod()); hatası, TestMethod bulunamadı – sarsnake

+0

FracTemplateCtrl'in de, ek olarak FracTemplateCtrl türünde olması gerekir. Bu yorumdaki kod, TestMethod'u Control türünde bir değişkene çağırmaya çalışıyor. –

0

, diğerleri var gibi, buna erişmesini yaparken emin olun dedi, doğru bir şekilde sen döküyorsun. Örneğin:

formunuzda
public MyControl : UserControl 
{ 
    public void MyMethod(){...} 
} 

:

private MyControl mycontrol = new MyControl(); 
private void MainForm() 
{ 
    this.Controls.Add(mycontrol); 

    InitializeComponent(); 
} 

private void DoStuff() 
{ 
    ((MyControl)mycontrol).MyMethod(); 
} 
0
Ahmet'in cevabı bitti, ama Visual Studio UserControl sınıfını algılama konusunda biraz sakat olabilir ve tipi değil şikayet nasıl olduğunu

var olmak. Bu durumlarda, web.config dosyasında başvurulan olsa bile, sayfanın tanınmasını zorlamak için <% @Reference %> etiketini eklemem gerekir.

İlgili konular