WinForm中重繪滾動條以及用重繪的滾動條控制ListBox的滾動
2 using System.Collections.Generic;
3 using System.ComponentModel;
4 using System.Drawing;
5 using System.Data;
6 using System.Text;
7 using System.Windows.Forms;
8 using System.Windows.Forms.Design;
9 using System.Diagnostics;
10 namespace Winamp
11 {
12
13 publicpartialclass CustomScrollbar : UserControl
14 {
15 16 protected Color moChannelColor = Color.Empty;
17 protected Image moUpArrowImage =null;
18 protected Image moDownArrowImage =null;
19 protected Image moThumbArrowImage =null
20 21 protected Image moThumbTopImage =null;
22 protected Image moThumbTopSpanImage =null;
23 protected Image moThumbBottomImage =null;
24 protected Image moThumbBottomSpanImage =null;
25 protected Image moThumbMiddleImage =null;
26 27 protectedint moLargeChange =10;
28 protectedint moSmallChange
29 protectedint moMinimum =0;
30 protectedint moMaximum =100;
31 protectedint moValue =0;
32 privateint nClickPoint;
33 34 protectedint moThumbTop =0;
35 36 protectedbool moAutoSize =false;
37 38 privatebool moThumbDown =false;
39 privatebool moThumbDragging =false;
40 41 publicnewevent EventHandler Scroll =null;
42 publicevent EventHandler ValueChanged =null;
43 44 privateint GetThumbHeight()
45 {
46 int nTrackHeight = (this.Height - (UpArrowImage.Height + DownArrowImage.Height));
47 float fThumbHeight = ((float)LargeChange / (float)Maximum) * nTrackHeight;
48 int nThumbHeight = (int)fThumbHeight;
49 50 if (nThumbHeight > nTrackHeight)
51 {
52 nThumbHeight = nTrackHeight;
53 fThumbHeight = nTrackHeight;
54 }
55 if (nThumbHeight <56)
56 {
57 nThumbHeight =56;
58 fThumbHeight =56;
59 }
60 61 return nThumbHeight;
62 }
63 64 public CustomScrollbar()
65 {
66 67 InitializeComponent();
68 SetStyle(ControlStyles.ResizeRedraw, true);
69 SetStyle(ControlStyles.AllPaintingInWmPaint, true);
70 SetStyle(ControlStyles.DoubleBuffer, true);
71 72 moChannelColor = Color.FromArgb(51, 166, 3);
73 UpArrowImage = BASSSkin.uparrow;
74 DownArrowImage = BASSSkin.downarrow;
75 76 77 ThumbBottomImage = BASSSkin.ThumbBottom;
78 79 ThumbMiddleImage = BASSSkin.ThumbMiddle;
80 81 this.Width = UpArrowImage.Width;
82 base.MinimumSize =new Size(UpArrowImage.Width, UpArrowImage.Height + DownArrowImage.Height + GetThumbHeight());
83 }
84 85 [EditorBrowsable(EditorBrowsableState.Always), Browsable(true), DefaultValue(false), Category("Behavior"), Description
86 87 ("LargeChange")]
88 publicint LargeChange
89 {
90 get { return moLargeChange; }
91 set 92 {
93 moLargeChange = value;
94 Invalidate();
95 }
96 }
97 98 [EditorBrowsable(EditorBrowsableState.Always), Browsable(true), DefaultValue(false), Category("Behavior"), Description
99 100 ("SmallChange")]
101 publicint SmallChange
102 {
103 get { return moSmallChange; }
104 set105 {
106 moSmallChange = value;
107 Invalidate();
108 }
109 }
110 111 [EditorBrowsable(EditorBrowsableState.Always), Browsable(true), DefaultValue(false), Category("Behavior"), Description("Minimum")]
112 publicint Minimum
113 {
114 get { return moMinimum; }
115 set116 {
117 moMinimum = value;
118 Invalidate();
119 }
120 }
121 122 [EditorBrowsable(EditorBrowsableState.Always), Browsable(true), DefaultValue(false), Category("Behavior"), Description("Maximum")]
123 publicint Maximum
124 {
125 get { return moMaximum; }
126 set127 {
128 moMaximum = value;
129 Invalidate();
130 }
131 }
132 133 [EditorBrowsable(EditorBrowsableState.Always), Browsable(true), DefaultValue(false), Category("Behavior"), Description("Value")]
134 publicint Value
135 {
136 get { return moValue; }
137 set138 {
139 moValue = value;
140 141 int nTrackHeight = (this.Height - (UpArrowImage.Height + DownArrowImage.Height));
142 float fThumbHeight = ((float)LargeChange / (float)Maximum) * nTrackHeight;
143 int nThumbHeight = (int)fThumbHeight;
144 145 if (nThumbHeight > nTrackHeight)
146 {
147 nThumbHeight = nTrackHeight;
148 fThumbHeight = nTrackHeight;
149 }
150 if (nThumbHeight <56)
151 {
152 nThumbHeight =56;
153 fThumbHeight =56;
154 }
155 156 157 int nPixelRange = nTrackHeight - nThumbHeight;
158 int nRealRange = (Maximum - Minimum) - LargeChange;
159 float fPerc =0.0f;
160 if (nRealRange !=0)
161 {
162 fPerc = (float)moValue / (float)nRealRange;
163 164 }
165
相關推薦
WinForm中重繪滾動條以及用重繪的滾動條控制ListBox的滾動
1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Drawing; 5 using System.Data; 6 using Sy
asp頁面用url在頁面中傳值亂碼問題以及用js獲得url中傳來引數
第一:在url中放入引數: var txtName = (“#” + name).val(); alert(txtName);(“#SelectFrame”).attr(“src”
(二)在vue中設定預設的路由以及設定重定向
在vue中設定預設的路由,即一進入頁面就顯示其中一個路由的內容,也就是設定重定向。如下是設定預設路由的程式碼,即router資料夾下的index.js的內容:import Vue from 'vue'; import Router from 'vue-router'; imp
配置變更導致Activity重啟——Fragment儲存以及不重啟Activity做法
一.在Fragment中儲存Activity的資料(在配置變更導致Activity重啟情況下) 在關閉Activity的時候,你希望能把頁面上的資料儲存下來,很多人第一反應一定是onSaveInstanceState()這個方法。對,一般情況
C# Winform中自定義篩選及自帶統計行的Datagridview控制元件
網上分享有很多種自制DGV控制元件,都有不小的缺陷。 沒辦法,按需求自己定製了一個。 一、過濾方面類似於Excel的篩選功能。支援右鍵選單篩選,同時也支援在文字框輸入文字按焦點列進行篩選; 二、統計行我採用的是雙Datagridview方案。在構建控制元件時加入一個Dock為Bottom的子Datagr
sql語句查詢表中重復字段以及顯示字段重復條數
如果 重復 src 全部 展示 過去 ima 字段名 mage 今天跟大家分享兩條SQL語句,是關於查詢某表中重復字段以及顯示該字段的重復條數。 1.select * from 表名 where 列名 in (select 列名 from 表名 group by 列名 ha
解決winform中的panel重繪閃爍問題
利用winform開發時,可能都會遇到一個問題,就是在panel中不停的重繪圖形時,圖形會不停的閃爍。要解決這個辦法只需要開啟雙緩衝即可,由於初學c#,理解的不是很深,所以不多做解釋。以下程式碼親測可以解決這個問題:首先建立一個自己的panel類: using System
Asp.net 中的div 滾動條以及Css 的使用....
---當控制元件的高度超出範圍,自動出現上下,左右 拉動滾動條 <DIV style="OVERFLOW: auto; WIDTH: 600px; HEIGHT: 104px" align="left"> <table>
用指令管理vue滾動狀態以及滾動條復原,讓你為所欲為。
滾動狀態管理以及滾動條復原是困擾了我很久的問題,想必也有和我有同樣感受的同學,比如首頁跳詳情頁,以及各詳情頁滾動條的管理,讓人感覺很難受,那麼如何來簡化它呢?那麼就使用這款神奇的外掛vue-rescroll吧,讓你瘋狂飆車,為所欲為。 &
C#中關於WinForm中重繪TabControl選項卡標題的問題
這裡說的是每個TabPage的頭部,也就是標題,不是工作區域。 最開始用到TabControl的時候,我的每個選項卡是寫死的,而後由於專案需求又動態添加了TabControl並生成各個選項卡,而兩次我都要重繪 其標題,因此在這裡把我當時兩種情形下重
WinForm中,每隔一段時間(參數)調用一次函數(使用定時器)
pre tick break switch 時間 器) chan pri args 1 System.Windows.Forms.Timer setTimer; //定義一個定時器 2 int flg = 0;
.Net 4.X 提前用上 .Net Core 的配置模式以及熱重載配置
returns ets manage 自動生成 studio 127.0.0.1 文件中 讀取配置 應用程序 1. 前言 在提倡微服務及 Serverless 越來越普及的當下,傳統 .Net 應用的配置模式往往依賴於一個名為 web.config 的 XML 文件,在可擴
egret:設置滾動視圖、隱藏滾動條以及層級的問題
直接 關閉按鈕 分享圖片 ont class clas size 界面 滾動條 一、設置滾動視圖 二、隱藏滾動條 三、層級問題 我將圖中list列表內容添加到界面後,我發現右上角的關閉按鈕失靈了, 第一反應是將這個按鈕的層級設置到最高層, 但是我直接設置後,發現還是有
spring cloud中微服務之間的調用以及eureka的自我保護機制
技術 頁面 dba mapping arch 之間 tga build ng- 上篇講了spring cloud註冊中心及客戶端的註冊,所以這篇主要講一下服務和服務之間是怎樣調用的 不會搭建的小夥伴請參考我上一篇博客:idea快速搭建spring cloud-註冊中心與註冊
父類中的方法被覆蓋以及子類調用父類覆蓋的方法
實現 python 函數 調用 self. exe over obj 同名 覆蓋 override 覆蓋是指在有繼承關系的類中,子類中實現了與基類同名的方法,在子類的實例調用該方法時,實際調用的是 子類中的覆蓋版本,這種現象叫做覆蓋 調用super 函數的兩個方
html頁面重繪和迴流以及優化
在討論頁面重繪、迴流之前。需要對頁面的呈現流程有些瞭解,頁面是怎麼把html結合css等顯示到瀏覽器上的,下面的流程圖顯示了瀏覽器對頁面的呈現的處理流程。可能不同的瀏覽器略微會有些不同。但基本上都是類似的。 1.瀏覽器把獲取到的HTML程式碼解析成1個DOM樹,HTML中的每個tag都是D
根據id在同一張表中查出兩條資料,並將這兩條資料用“-”拼起來作為一條資料返回
area表 id areaname 25 雲南省 417 玉溪市 要求:在area表中根據id查出兩條資料,將這兩條資料用"-"拼起
在Winform中遮蔽UnityWebPlayer的右鍵以及自帶Logo解決方案整理
文章寫的非常好, 完美解決問題:https://www.cnblogs.com/fengshen/p/Unity3D.html 根據專案的需要,對已經完成的Unity三維模型以及遊戲要使用Winform進行包裝,也就是使用Winform做一層外殼。因此在展示Unity的時候使用到了UnityWeb
js中表達式 >>> 0 淺析 (以及用php簡單翻譯)
今天在看lodash的原始碼中slice這個函式實現的時候發現了裡面有這麼一行程式碼 length = start > end ? 0 : ((end - start) >>> 0) start >>>= 0 當時就很疑惑,知道 >&g
陣列中去掉分割字串以及去重
//將陣列中的帶逗號的元素分割,如["A,B,C","A","A,B","C"]變為["A","B","C"] var roleA = new Array(); var roleB = new Array(); for(var i in roleInfo){ if(roleInfo[i].