91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#使用Panel實現窗體動態側邊欄

發布時間:2020-07-22 17:02:22 來源:網絡 閱讀:3135 作者:wangluojisuan 欄目:編程語言

有時候發現界面的布局比較復雜,需要隱藏顯示一部分內容需要使用動態側邊欄的方法實現,雖然可是使用第三方的控件,但是有時候也不需要那么麻煩,自己做了一個簡單的,可是使用在要求不高的場所。

可以實現側邊欄的展開、隱藏和鎖定的功能。添加的側邊欄默認是不顯示的通過鼠標的懸停事件MouseHover來觸發展開動作。側邊欄實際上是一個窗體或者是容器,實現展開的動作必須在一個時間段內逐步的增加寬度,我采用Panel作為容器的載體,在一個線程中逐步增加Panel的Width屬性。隱藏,主要使用的是Panel的Visible屬性來實現,隱藏條件的判斷是通過判斷鼠標位置是不是在側邊欄的邊界之外來實現的。鎖定,是使Panel始終處于顯示的狀態,使隱藏Panel的函數不執行來實現的。

界面

C#使用Panel實現窗體動態側邊欄

相關代碼:

展開:

private void toolStripButton2_MouseHover(object sender, EventArgs e)

        {

//鼠標懸停事件,展開

if (!this.panel2.Visible)  //panel2為側邊欄的容器

            {

Thread ts = new Thread(new ParameterizedThreadStart(TaskShowPanel));

                ts.Is true;  //設置為后臺線程

                ts.Priority = ThreadPriority.Normal;  //設置優先級

                ts.Start((Object)245);   //Panel展開寬度245

            }

        }

//定義的線程執行函數

private void TaskShowPanel(Object ParObject)

        {

int w = (int)ParObject;

for (int i = 0; i <= w; i++)

            {               

                ShowPanel(this.panel2, i);

            }

        }

private delegate void SetTextCallback(Panel p1, int w);

/// <summary>

/// 展開動作

/// </summary>

/// <param name="p1">panel容器</param>

/// <param name="w">寬度</param>

private void ShowPanel(Panel p1,int w)

        {

//跨線程訪問

try

            {

if (p1.InvokeRequired)

                {

SetTextCallback d = new SetTextCallback(ShowPanel);

                    p1.Invoke(d, new Object[] { p1, w });

                }

else

                {

                    p1.Width = w;

if (!p1.Visible)

                    {

                        p1.Visible = true;

                    }

                }

            }

catch (Exception ex)

            {

MessageBox.Show(ex.Message, "ShowPanel函數執行錯誤");

            }

        }

隱藏:

private void listView1_MouseMove(object sender, MouseEventArgs e)

        {

Point panelPoint = this.PointToClient(Control.MousePosition);  //鼠標當前位置

//this.panel2.Location.X panel2的起始位置

//this.panel2.Width panel2的寬度

if (this.panel2.Visible && (panelPoint.X > (this.panel2.Location.X + this.panel2.Width)))

            {

this.panel2.Visible = false;

            }

        }

鎖定:

private void button1_Click(object sender, EventArgs e)

        {

//刪除隱藏事件

this.listView1.MouseMove -= new System.Windows.Forms.MouseEventHandler(this.listView1_MouseMove);

        }

做的還不太成熟,但是基本的功能實現了,本人拋磚引玉一下,希望有大俠有更好的方法。源代碼附上

C#使用pannel實現動態側邊欄

附件:http://down.51cto.com/data/2362406
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

集贤县| 江达县| 浑源县| 获嘉县| 墨玉县| 新龙县| 新巴尔虎左旗| 内江市| 香格里拉县| 陆丰市| 大同县| 赤水市| 邢台县| 烟台市| 揭西县| 凤翔县| 桓仁| 清原| 清河县| 如东县| 额尔古纳市| 保定市| 故城县| 库尔勒市| 集贤县| 阳谷县| 金门县| 平原县| 巨野县| 曲阳县| 黄龙县| 苍梧县| 景德镇市| 曲沃县| 施秉县| 临颍县| 金湖县| 理塘县| 彭水| 瑞金市| 龙里县|