الأساليب العامة داخل التحكم في المستخدم C# .NET

StackOverflow https://stackoverflow.com/questions/603419

  •  03-07-2019
  •  | 
  •  

سؤال

كيف يمكن استدعاء الطريقة العامة لمكافحة المستخدم من داخل الصفحة؟

أقوم بتحميل عنصر التحكم ديناميكيًا داخل Oninit على الصفحة. أي أفكار؟ لسبب ما ، أحصل على خطأ في البناء يقول أن الطريقة غير موجودة ، على الرغم من أنها عامة. البدء في التفكير في أن عناصر تحكم المستخدم لا تستحق كل هذه المتاعب.

هل كانت مفيدة؟

المحلول

لقد قلت

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

عليك أن تقول

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

لاحظ أن fracTemplateCtrl is أعلن ك FracTemplateCtrl, ، لذلك يعرف Visual Studio أنه يحتوي على ملف TestMethod(). عندما يتم إعلانه على أنه أ Control, ، Visual Studio لا يمكن أن تجعل هذا الافتراض.

نصائح أخرى

هل تقوم بإلقاء عنصر تحكم المستخدم على النوع الصحيح؟

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

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

إذا كان فصلك يرث من UserControl ، فتأكد من أنه عند الوصول إليه ، كما قال الآخرون ، فأنت تلقي به بشكل صحيح. على سبيل المثال:

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();
}

إجابة مايك هي كيف يتم ذلك ، ولكن يمكن أن يكون Visual Studio متزعزعًا بعض الشيء حول اكتشاف فئة UserControl ، ويشتكي من أن النوع غير موجود. في تلك المواقف ، يجب أن أضيف أ <% @Reference %> ضع علامة على الصفحة لإجبارها على التعرف عليها ، على الرغم من أنه قد يتم الرجوع إليها في web.config.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top