簡體   English   中英

訪問 Gtk# (GtkSharp) Button 的標簽子項

[英]Access Gtk# (GtkSharp) Label child of a Button

我在 MonoDevelop 中有一個 C# 項目。 長話短說,我發現如果我在 Stetic GUI 中使用帶有標簽的按鈕,我無法應用樣式/pango/標記/圖像。

我閱讀的文檔和我看到的一些代碼說要制作標簽或圖像並將其打包到按鈕中。

我為 Label 這樣做了,並且成功地對其進行了樣式設置。

對象 Build 方法的示例:

private void Build()
        {
            box = new HBox(false, 0);
            box.SetSizeRequest(40, 40);
            box.BorderWidth = 2;

            button = new Button();
            button.Clicked += cyclepoint;

            lblpoints = new Label();
            lblpoints.Text = "200";
            lblpoints.ModifyFg(Gtk.StateType.Normal, new Gdk.Color(237, 52, 112));

            button.Add(lblpoints);
            button.ShowAll();

            box.Add(this.button);
            box.ShowAll();

            this.Add(box);

        }

所以沒關系。 現在我正在嘗試附加信號,以便每當單擊按鈕時,它都會更改特別單擊的按鈕的標簽文本(因為會有多個表單。

我的信號代碼:

private void cyclepoint(object sender, EventArgs args)
        {
            Console.WriteLine("Button Pressed!");
            Console.WriteLine((Label)(((Button)sender).Child).Text);
        }

當我構建 GUI 並單擊按鈕時的實際輸出

Button Pressed!
GtkLabel

然而,當我嘗試在下面進行更改時,MonoDevelop IDe 不會編譯出錯:

錯誤 CS1061:“Widget”不包含“Text”的定義,並且找不到接受“Widget”類型的第一個參數的可訪問擴展方法“Text”(您是否缺少 using 指令或程序集引用?)(CS1061 )(噓)

所以我似乎無法訪問 Gtk.Label 的Text屬性來更改它的顯示文本。 這樣做的正確方法是什么?

所以在我看來。 我不相信我可以訪問 Gtk.Button 對象的“Child”元素。

但是,我后來發現我可以直接從類中訪問和編輯子 Gtk.Label 對象的 GTK.Label.Text 屬性。 這將自動更新標簽,無需調用 Show() 函數,因此將立即反映更新以啟動! 此外,它還保留了我應用的 pango 樣式屬性。

最終目標是擁有一個程式化的倒計時類型的 Button 對象,該對象在點擊和目標完成時減少數量。


        private void cyclepoint(object sender, EventArgs args)
        {
            // Points is a different array that holds the increments of values
            if (this.lblpoints.Text == points[10])
            {
                lblpoints.Text = points[0];
            }
            else
            {
                int nextval;
                nextval = (Array.IndexOf(points, this.lblpoints.Text) + 1);
                this.lblpoints.Text = points[nextval];
            }
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM