2013-10-16 69 views
0

當我需要更新列表框中的數據時,我有一個靜態方法,我從另一個類調用。但後來我需要滾動列表框到最後一個項目。這裏是代碼:靜態方法訪問列表框

public static void updateMessages() 
    { 
     MyDatasCurentUser.Clear();//clear messages from previewous user from datas 
     foreach (var items in UniDB.returnlistOfMessagesData(IdOfChoosenUser, MainContentPage.myID)) 
     { 
      _mydataCurentUser.Add(new BindingData 
      { 
       MessengerReadTime = new DateTime(items.readTime.Year, items.readTime.Month, items.readTime.Day, items.readTime.Hour, items.readTime.Minute, 0), 
       MessengeFullName = items.senderName, 
       MessengerTime = new DateTime(items.sendTime.Year, items.sendTime.Month, items.sendTime.Day, items.sendTime.Hour, items.sendTime.Minute, 0).ToString("dd.MM.yyyy - HH:mm"), 
       MessengerMessage = items.message, 
       MessengerIsFromMe = items.isFromMe, 
      }); 
     } 

     lbChoosenMessagesUsers.ScrollIntoView(lbChoosenMessagesUsers.Items.Last()); 
    } 

,但我得到的錯誤不能在這個訪問非靜態字段在靜態情況下lbChoosenMessagesUsers.ScrollIntoView(lbChoosenMessagesUsers.Items.Last());

有什麼辦法就是方法updateMessages時,我如何能做到這一點lbChoosenMessagesUsers.ScrollIntoView(lbChoosenMessagesUsers.Items.Last());()叫什麼名字?

+0

製作方法不是靜態的或通過它'lbChoosenMessagesUsers '作爲參數。 –

+0

你不應該有這種方法作爲靜態 –

+0

所以,如果我將其更改爲非靜態方法如何我可以從另一個類調用此方法? –

回答

1

如果你有一個類的非靜態方法:

class Form1 
{ 
    public void UpdateMessages() 
    { 
     // ... 
     lbChoosenMessagesUsers.ScrollIntoView(lbChoosenMessagesUsers.Items.Last()); 
    } 
} 

你想從不同的類的對象調用它,該對象將需要第一個對象的引用。一個常見的解決方案是將參考第一對象傳遞到所述第二的構造:

class OtherClass 
{ 
    Form1 _form; 
    OtherClass(Form1 form) 
    { 
     _form = form; 
    } 

    void Method() 
    { 
     //can access the methods of the other object 
     _form.UpdateMessages(); 
    } 
} 

或者,也可以通過對象的後面:

class OtherClass 
{ 
    public void Method(Form1 form) 
    { 
     form.UpdateMessages(); 
    } 
} 
+0

絕對精彩的指南。謝謝。 –