#頭條創作挑戰賽#
自制浏覽器(了解即可)
通過工具箱中的WebBrowser控件自制一個簡易的浏覽器,這個控件是基于IE的浏覽器引擎的解析器,可以通過此控件顯示網頁指定網址的網頁
浏覽器引擎相當于飛機,汽車的發動機,如騰訊,360安全,搜狗高速等許多知名國産浏覽器都是基于此引擎;中國現今不能稱之為科技強國的原因是在許多方面都沒有掌握最核心的技術
如有識學者說的:沒有0-1的突破,隻在1-100有許多"新奇确無用"的突破,猶如沙子建成的城堡一樣華而不實,經不起稍大點的風浪
最好的現成例子如#華為手機#因#晶片#被卡脖子,不得不收縮高端手機業務,是以現今華為花大力氣自研#高端晶片#期待早日取得預想成果
願高層下決心早作改變,不僅留住自己培養的人才,還要吸引國外優秀人才,腳踏實地的認真研發,早日突破并掌握高精尖核心技術,不再被處處卡脖子
下面的例題也隻是使用VS的浏覽器控件使用其屬性或方法進行稍作修改;以前有消息說某公司自研了真正的國産浏覽器,後期證明使用的還是國外的引擎,是為騙國*弄得噱頭
示例1:自制簡易浏覽器
浏覽器界面 ,本窗體類名為 FBrowser
使用WebBrowser控件步驟:
1)将WebBrowser控件拖入窗體中,在控件的右上角三角面闆中選中"在父容器中停靠"選項(預設是鋪面整個窗體,取消後可自主調整大小)
将其屬性ScriptErrorsSuppressed設定為True,作用:屏蔽彈出腳本錯誤對話框
2)拖入文本框,設定Text屬性的值為http:// 友善後續使用,如直接輸入www.toutiao.com即可
3)拖入按鈕,設定Text屬性值為轉到,添加單擊事件,在事件中編寫實作代碼
注意:如果是在老項目中添加的窗體,需要在Program中設定啟動窗體為目前窗體(在之前的105章節中說過,帶截圖,不再贅述) 如果是新窗體項目則不需要(預設就是新窗體)
private void button1_Click(object sender, EventArgs e)
{
//已拖入WebBrowser控件
string urlStr = "https://www.toutiao.com";
////方式1 通過屬性url指派網址
////this.webBrowser1.Url = new Uri(urlStr);
////方式2 通過Navigate方法指派網址
//this.webBrowser1.Navigate(urlStr);
//通過擷取文本框中的網址進行指派
this.webBrowser1.Navigate(urlStr);
}
自制浏覽器成果
現今可改進的地方是添加工具欄控件,在此容器控件中添加一些常用網站的按鈕,在其單擊事件中将網址與按鈕名稱對應着寫死,形成類似浏覽器上方書簽欄的效果
定時器 - Timer控件
其功能是可以在設定的時間間隔内循環執行某些代碼
使用方式:1)拖入Timer控件 2)執行個體化一個Timer對象,都是在其Tick事件中編寫要執行的代碼
示例3:借用浏覽器窗體,在轉到按鈕上顯示目前計算機的時間
//浏覽器窗體的加載事件
//在窗體運作時就執行這個事件中的代碼
private void FBrowser_Load(object sender, EventArgs e)
{
////方式1 拖入控件直接使用
////設定間隔時間 機關是: 毫秒
//timer1.Interval = 1000;//1秒
////開啟定時器
//timer1.Start();
////添加 Tick 事件,在事件中編寫要執行的代碼
//timer1.Tick += timer1_Tick;
//方式2 執行個體化一個Timer對象
Timer tm = new Timer();
tm.Interval = 1000;
//tm.Tick += 後面直接按tab鍵
//自動添加 tm_Tick 事件
tm.Tick += tm_Tick;
tm.Start();
}
//拖入控件的事件
void timer1_Tick(object sender, EventArgs e)
{
string nowTime = DateTime.Now.ToString();
button1.Text = nowTime;
}
//執行個體化對象的事件
void tm_Tick(object sender, EventArgs e)
{
string nowTime = DateTime.Now.ToString();
button1.Text = nowTime;
}
通過定時器顯示目前時間
示例4:使用定時器自制一個類似提醒做事的簡易備忘錄小程式(旨在對時間類型的判斷)
//在加載事件中開啟定時器
private void FBrowser_Load(object sender, EventArgs e)
{
//事先隐藏label1标簽的提醒資訊
label1.Visible = false;
//開啟一個定時器在其事件中
//時時檢測目前時間是否達到了設定時間
//達到設定時間label1就會顯示提醒資訊
Timer t1 = new Timer();
t1.Tick += t1_Tick;
t1.Start();
}
//t1 的t1_Tick 事件
void t1_Tick(object sender, EventArgs e)
{
//使用DateTime的不同屬性或方法得到不同格式的目前時間資訊
//假設 設定的提醒時間是8:30
if (DateTime.Now.ToShortTimeString() == "8:30")
{
label1.Visible = true;
}
//顯示1分鐘,此任務結束,隐藏起來
if (DateTime.Now.ToShortTimeString() == "8:31")
{
label1.Visible = false;
//可繼續下一項備忘錄的提醒業務
}
}
使用者控件(暫時了解)
在窗體項目上右擊選擇"添加"一>"使用者控件",在打開的設計器中設定使用者界面
添加使用者控件
示例2:設計一個常用的登陸界面的使用者控件
設計自定義的登陸界面
中間的是:自己設計的登陸界面的使用者控件
左側工具箱中是設計好的使用者控件,右側是使用使用者控件的窗體
使用方法:直接将自己的使用者控件拖入需要的窗體中即可
"使用者控件"設計好後,就是一個整體,在窗體中使用原則上無法通路其内部的子控件
使用使用者控件的益處:1)統一界面風格 2)最主要是與代碼重用類似,隻需修改使用者控件,在所有應用此控件的窗體都會跟着改變,不用再逐個修改相關的登陸界面等等