<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # GTK 中的小部件 II > 原文: [http://zetcode.com/gui/gtksharp/widgetsII/](http://zetcode.com/gui/gtksharp/widgetsII/) 在 GTK# 編程教程的這一部分中,我們繼續介紹 GTK# 小部件。 我們將介紹`Entry`小部件,`Scale`小部件,`ToggleButton`和`Calendar`小部件。 ## `Entry` `Entry`是單行文本輸入字段。 該小部件用于輸入文本數據。 `entry.cs` ```cs using Gtk; using System; class SharpApp : Window { Label label; public SharpApp() : base("Entry") { SetDefaultSize(250, 200); SetPosition(WindowPosition.Center); BorderWidth = 7; DeleteEvent += delegate { Application.Quit(); }; label = new Label("..."); Entry entry = new Entry(); entry.Changed += OnChanged; Fixed fix = new Fixed(); fix.Put(entry, 60, 100); fix.Put(label, 60, 40); Add(fix); ShowAll(); } void OnChanged(object sender, EventArgs args) { Entry entry = (Entry) sender; label.Text = entry.Text; } public static void Main() { Application.Init(); new SharpApp(); Application.Run(); } } ``` 此示例顯示了條目小部件和標簽。 我們輸入的文本將立即顯示在標簽控件中。 ```cs Entry entry = new Entry(); ``` `Entry`小部件已創建。 ```cs entry.Changed += OnChanged; ``` 如果`Entry`小部件中的文本被更改,我們將調用`OnChanged()`方法。 ```cs void OnChanged(object sender, EventArgs args) { Entry entry = (Entry) sender; label.Text = entry.Text; } ``` 我們從`Entry`小部件獲取文本并將其設置為標簽。 ![Entry Widget](https://img.kancloud.cn/97/f9/97f9684d0acb37971970fc5cf025c307_258x228.jpg) 圖:`Entry`小部件 ## `HScale` `Scale`是一個小部件,可讓用戶通過在有限間隔內滑動旋鈕以圖形方式選擇一個值。 我們的示例將顯示音量控制。 `hscale.cs` ```cs using Gtk; using System; class SharpApp : Window { Gdk.Pixbuf mute, min, med, max; Image image; public SharpApp() : base("Scale") { SetDefaultSize(260, 150); SetPosition(WindowPosition.Center); DeleteEvent += delegate { Application.Quit(); }; HScale scale = new HScale(0, 100, 1); scale.SetSizeRequest(160, 35); scale.ValueChanged += OnChanged; LoadPixbufs(); image = new Image(mute); Fixed fix = new Fixed(); fix.Put(scale, 20, 40); fix.Put(image, 219, 50); Add(fix); ShowAll(); } void LoadPixbufs() { try { mute = new Gdk.Pixbuf("mute.png"); min = new Gdk.Pixbuf("min.png"); med = new Gdk.Pixbuf("med.png"); max = new Gdk.Pixbuf("max.png"); } catch { Console.WriteLine("Error reading Pixbufs"); Environment.Exit(1); } } void OnChanged(object obj, EventArgs args) { HScale scale = (HScale) obj; double val = scale.Value; if (val == 0) { image.Pixbuf = mute; } else if (val > 0 && val < 30) { image.Pixbuf = min; } else if (val > 30 && val < 80) { image.Pixbuf = med; } else { image.Pixbuf = max; } } public static void Main() { Application.Init(); new SharpApp(); Application.Run(); } } ``` 在上面的示例中,我們有`HScale`和`Image`小部件。 通過拖動比例尺,我們可以在`Image`小部件上更改圖像。 ```cs HScale scale = new HScale(0, 100, 1); ``` `HScale`小部件已創建。 參數是下邊界,上邊界和階躍。 ```cs HScale scale = (HScale) obj; double val = scale.Value; ``` 在`OnChange()`方法中,我們獲得了比例小部件的值。 ```cs if (val == 0) { image.Pixbuf = mute; } else if (val > 0 && val <= 30) { image.Pixbuf = min; } else if (val > 30 && val < 80) { image.Pixbuf = med; } else { image.Pixbuf = max; } ``` 根據獲得的值,我們在圖像小部件中更改圖片。 ![HScale Widget](https://img.kancloud.cn/ed/2e/ed2e28bbbfe6df66f2895811d096a318_268x178.jpg) 圖:`HScale`小部件 ## `ToggleButton` `ToggleButton`是具有兩種狀態的按鈕:已按下和未按下。 通過單擊可以在這兩種狀態之間切換。 在某些情況下此功能非常合適。 `togglebuttons.cs` ```cs using Gtk; using System; class SharpApp : Window { DrawingArea darea; Gdk.Color col; public SharpApp() : base("ToggleButtons") { col = new Gdk.Color(0, 0, 0); SetDefaultSize(350, 240); SetPosition(WindowPosition.Center); BorderWidth = 7; DeleteEvent += delegate { Application.Quit(); }; ToggleButton red = new ToggleButton("Red"); red.SetSizeRequest(80, 35); red.Clicked += OnRed; ToggleButton green = new ToggleButton("Green"); green.SetSizeRequest(80, 35); green.Clicked += OnGreen; ToggleButton blue = new ToggleButton("Blue"); blue.SetSizeRequest(80, 35); blue.Clicked += OnBlue; darea = new DrawingArea(); darea.SetSizeRequest(150, 150); darea.ModifyBg(StateType.Normal, col); Fixed fix = new Fixed(); fix.Put(red, 30, 30); fix.Put(green, 30, 80); fix.Put(blue, 30, 130); fix.Put(darea, 150, 30); Add(fix); ShowAll(); } void OnRed(object sender, EventArgs args) { ToggleButton tb = (ToggleButton) sender; if (tb.Active) { col.Red = 65535; } else { col.Red = 0; } darea.ModifyBg(StateType.Normal, col); } void OnGreen(object sender, EventArgs args) { ToggleButton tb = (ToggleButton) sender; if (tb.Active) { col.Green = 65535; } else { col.Green = 0; } darea.ModifyBg(StateType.Normal, col); } void OnBlue(object sender, EventArgs args) { ToggleButton tb = (ToggleButton) sender; if (tb.Active) { col.Blue = 65535; } else { col.Blue = 0; } darea.ModifyBg(StateType.Normal, col); } public static void Main() { Application.Init(); new SharpApp(); Application.Run(); } } ``` 在我們的示例中,我們顯示了三個切換按鈕和一個`DrawingArea`。 我們將區域的背景色設置為黑色。 切換按鈕將切換顏色值的紅色,綠色和藍色部分。 背景顏色取決于我們按下的切換按鈕。 ```cs col = new Gdk.Color(0, 0, 0); ``` 這是將使用切換按鈕更新的顏色值。 ```cs ToggleButton red = new ToggleButton("Red"); red.SetSizeRequest(80, 35); red.Clicked += OnRed; ``` `ToggleButton`小部件已創建。 我們將其大小設置為`80x35`像素。 每個切換按鈕都有其自己的處理器方法。 ```cs darea = new DrawingArea(); darea.SetSizeRequest(150, 150); darea.ModifyBg(StateType.Normal, col); ``` `DrawingArea`小部件是顯示顏色的小部件,由切換按鈕混合。 開始時,它顯示為黑色。 ```cs if (tb.Active) { col.Red = 65535; } else { col.Red = 0; } ``` 我們根據`Active`屬性的值更新顏色的紅色部分。 ```cs darea.ModifyBg(StateType.Normal, col); ``` 我們更新`DrawingArea`小部件的顏色。 ![ToggleButton widget](https://img.kancloud.cn/ee/54/ee54f0cea07953d8643b235c312c8b44_358x268.jpg) 圖:`ToggleButton` widget ## `Calendar` 我們最終的窗口小部件是`Calendar`小部件。 它用于處理日期。 `calendar.cs` ```cs using Gtk; using System; class SharpApp : Window { private Label label; public SharpApp() : base("Calendar") { SetDefaultSize(300, 270); SetPosition(WindowPosition.Center); DeleteEvent += delegate { Application.Quit(); }; label = new Label("..."); Calendar calendar = new Calendar(); calendar.DaySelected += OnDaySelected; Fixed fix = new Fixed(); fix.Put(calendar, 20, 20); fix.Put(label, 40, 230); Add(fix); ShowAll(); } void OnDaySelected(object sender, EventArgs args) { Calendar cal = (Calendar) sender; label.Text = cal.Month + 1 + "/" + cal.Day + "/" + cal.Year; } public static void Main() { Application.Init(); new SharpApp(); Application.Run(); } } ``` 我們有`Calendar`小部件和`Label`。 從日歷中選擇的日期顯示在標簽中。 ```cs Calendar calendar = new Calendar(); ``` `Calendar`小部件已創建。 ```cs Calendar cal = (Calendar) sender; label.Text = cal.Month + 1 + "/" + cal.Day + "/" + cal.Year; ``` 在`OnDaySelected()`方法中,我們將引薦給`Calendar`小部件,并將標簽更新為當前選擇的日期。 ![Calendar](https://img.kancloud.cn/c3/c5/c3c580b93d294a889e62fd2218014497_308x298.jpg) 圖:日歷 在本章中,我們結束了有關 GTK# 小部件的討論。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看