กล่องรายการไม่สามารถเข้าถึงได้เนื่องจากข้อผิดพลาดระดับการป้องกันใน Windows Phone 8.1

ฉันกำลังพยายามเพิ่มข้อความลงในกล่องรายการในแบบฟอร์มจากแบบฟอร์มอื่น แต่ฉันได้รับขีดเส้นใต้สีแดงในโค้ดที่ควรเพิ่มลงในกล่องรายการ เป็นไปได้ไหมที่จะส่งข้อมูลไปยังแบบฟอร์มในคลาสจากคลาสอื่นที่ฉันพยายามทำ ฉันใช้ VisualStudio 2013

ฉันมีรหัสนี้ที่ฉันใช้ในคลาส MainForm:

    // Local object of SearchResultForm
    SearchResultForm frmSearchResult = new SearchResultForm();
    frmSearchResult.Show();
    frmSearchResult.listBox.IsEnabled == false;

ข้อความแสดงข้อผิดพลาด: ไม่สามารถเข้าถึงได้เนื่องจากระดับการป้องกัน


person Devi Prasad    schedule 09.04.2015    source แหล่งที่มา
comment
คุณสร้างกล่องรายการใน SearchResultForm ด้วยตนเองหรือไม่   -  person mayowa ogundele    schedule 09.04.2015
comment
ใช่ ฉันสร้างกล่องรายการด้วยตนเองใน SearchResultForm   -  person Devi Prasad    schedule 09.04.2015
comment
เปลี่ยนชั้นเรียนของคุณเองเป็น public และคุณหมายถึงอะไรโดย 'แบบฟอร์ม'? ตราบใดที่ฉันทำงานกับ WP8 ฉันไม่มีแบบฟอร์มใดๆ สิ่งที่คุณเห็นเรียกว่า 'เพจ' คุณใช้แบบฟอร์ม Xamarin หรือไม่?   -  person Paweł Mach    schedule 09.04.2015
comment
ไม่ ฉันใช้ XAML ในการออกแบบ   -  person Devi Prasad    schedule 09.04.2015


คำตอบ (2)


เพิ่มพารามิเตอร์ให้กับคลาส SearchResultForm คลาสของคุณที่นี่คลาสของฉันคือ showvideolbx

      public class showvideolbx
      {
         public ListBox SVListBox { get; set; }
      }

กำหนดรหัสกล่องรายการให้กับพารามิเตอร์คลาส

     showvideolbx lbbox = new showvideolbx();
        lbbox.SVListBox = lbxSongsList;

จากนั้นตอนนี้คุณเรียกคลาสสร้างแล้วพารามิเตอร์กล่องรายการเป็น

     showvideolbx svlbox;
     if (svlbox.SVListBox.IsEnabled == false)
                svlbox.SVListBox.IsEnabled = true;

มันจะได้ผล โปรดลองอีกครั้ง

person Community    schedule 09.04.2015
comment
คำตอบที่น่าทึ่ง ขอบคุณ Chinni - person Devi Prasad; 09.04.2015
comment
คุณคงไม่อยากแนะนำคลาสอื่นเพื่อที่จะผ่านการอ้างอิง - person CodeCaster; 09.04.2015
comment
ใช่ มันจะได้ผล แต่เป็นวิธีแก้ปัญหาที่แย่มากและซับซ้อนโดยไม่จำเป็น - person CodeCaster; 09.04.2015
comment
มันจะง่ายกว่ามาก หากคุณเปิดเผยกล่องรายการของคุณเป็นคุณสมบัติใน frmSearchResult: public ListBox formList { get {return listBox; } } - person Romasz; 09.04.2015

ดูเหมือนว่า listBox ของคุณจะเป็น private สมาชิกของ SearchResultForm; นั่นหมายความว่าไม่สามารถเข้าถึงได้จากภายนอกคลาส SearchResultForm คุณสามารถสร้างตัวแปร listBox เป็น public หรือ internal ได้ แต่วิธีที่ดีกว่าคือสร้างเมธอด mutator ในคลาส SearchResultForm ดังนี้:

public void AddItemToListBox(string text) 
{
    listBox.Items.Add(text);
}

จากนั้นจากแบบฟอร์มหลักของคุณ คุณจะทำ:

  // Local object of SearchResultForm
SearchResultForm frmSearchResult = new SearchResultForm();
frmSearchResult.Show();
frmSearchResult.AddItemToListBox("test");

วิธีนี้ทำให้คุณสามารถอัปเดตกล่องรายการโดยไม่ต้องเปิดเผยรายละเอียดการใช้งานคลาส SearchResultForm ของคุณ

person Dan Dinu    schedule 09.04.2015
comment
สวัสดี Dan Dinu ขอบคุณสำหรับการเล่นซ้ำ โปรดดูคำถามอีกครั้งว่ามีการแก้ไขแล้ว - person Devi Prasad; 09.04.2015