亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將 Gtk.NodeView 投射到 C# 中的另一個類

將 Gtk.NodeView 投射到 C# 中的另一個類

C#
HUH函數 2022-10-23 10:20:44
我對 Gtk# 很陌生(不到一周),所以希望這不是一個完全錯誤的問題:我在 Gtk# 窗口中有一個 NodeView 小部件。它只是一個歌曲列表。當我點擊歌曲時,我想更新“當前播放:”標簽。到目前為止,我的代碼如下:protected void onSongSelected(object o, RowActivatedArgs args)    {        object selection = o;        //something needs to go here        currentSongName.Text = selection.ToString();    }現在,我知道這是不正確的。但是,這給了我對象 o 的類型(以及變量“selection”),即“Gtk.NodeView”。但是,我無法弄清楚如何使用 NodeView 來訪問所選節點中的任何信息。我試圖通過遵循此頁面的指南來解決我的問題:https: //www.mono-project.com/docs/gui/gtksharp/widgets/nodeview-tutorial/我創建了一個名為 MasterLibrary 的 TreeNode 類(與示例幾乎相同)并嘗試將 o 轉換為 MasterLibrary 類型,如下所示:object selection = (MasterLibrary)o;但是,這會導致我的程序崩潰,因為它說將 NodeView 轉換為 MasterLibrary 類是無效的。任何有關解決此問題的幫助將不勝感激。
查看完整描述

1 回答

?
守著一只汪

TA貢獻1872條經驗 獲得超4個贊

可以使用該Selection屬性來識別 NodeView 的選定項。您需要使用TreeIter和TreeModel,如下所示:


Gtk.TreeIter _i;

Gtk.TreeModel _m;

if (myNodeView.Selection.CountSelectedRows () > 0) {

  myNodeView.Selection.GetSelected (out _m, out _i);

  if (_m != null && _i != null) {

    currentSongName.text = _m.GetValue (_i, 0); // assuming your song name is in column 0 of the NodeView.

  }

}

請注意,最好先檢查選定的行數以避免空引用異常,但我會同時檢查模型和迭代器上的空值是否基于防御性編程。如果不同的列(即不是 col 0)包含您的歌曲名稱,則只需將列 # 從 0 更改為其他內容。


查看完整回答
反對 回復 2022-10-23
  • 1 回答
  • 0 關注
  • 107 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號