一般的ComboBox展開下拉選單後 會隨滑鼠移動反白項目

但是ListBox沒這能力
自己寫

要點在於是用MouseMove事件
效果同ComboBox

一般的ComboBox展開下拉選單後 會隨滑鼠移動反白項目

但是ListBox沒這能力
自己寫

要點在於是用MouseMove事件
效果同ComboBox

BindingSource 好用的地方 在於查詢完 結果丟進去 什麼鬼控制項都能跟他Binding一起 又有好用的position讓你上上下下
但是當你想要效仿datagridview從中抓ColumnName啦 抓Row啦 抓Items啦之類的東東之時 你會發現

但是本人就是想這麼幹,BindingSource丟給datagridview它讀的懂,自然沒道理無法直接拆解來用
使出第一百零一招 請出好朋友估狗 未果 查到的不是火星文 就是沒關係的東東
只好亂打嘗試錯誤法 + 偵錯
偵錯的結果果然有法子在某個地方找到想要的東東

上圖是誤導的 沒藏那麼深 -.-
解答是被包裝成DataView 先轉型在從中foreach即可

以應用程式來對網頁進行取值 控制 操作 自古以來本人就略感興趣
抓值的話一開始什麼都不懂直接拿整份HTML文件自己寫迴圈解析字串
但是HTML又非人人以標準撰寫 所以時而可行時而失敗
直接對網頁作控制更是百思不得其解
寫程式的莫非定律 - 你想不到的別人未必想不到 你想得到的別人都已經想到了 =3=
咕狗老師教教我 立刻就給我回答了 還省下一條肉乾當束脩
式門遁甲 - (C#)用WebBrowser控制項寫網頁抓取程式之一些心得一個webBrowser 一個button
button按下
外表看似簡單 難度卻異於常人 的控制項comboBox
comboBox本身當然沒什麼好難的
但是如果想要用 TextBox + ListBox + Button 硬是湊成一個偽comboBox卻沒想像簡單

光是標題就是難題了
什麼意思呢? 舉例來說這是一個comboBox展開下拉的狀態

如果這時候點了Form標題 他就把下拉選單收合起來


那好了要怎麼在Form觸發點擊標題的事件?

事實上的答案就是 - 辦不到
因為打內法蘭克先生根本沒處理標題的事件
預設form的mousedown mouseup mouseclick事件 也都是在點擊標題列下面的區域才能觸發 與標題無關
此時膜拜csdn
http://topic.csdn.net/u/20091015/11/56540da1-3c57-487f-9f31-2e1c60c1813c.html
四樓表示這裡都是都是放牛的人 十分牛B
以下備忘記錄
private void Form1_Load(object sender, EventArgs e) {
this.TitleClick += new EventHandler(Form1_TitleClick);
}
void Form1_TitleClick(object sender, EventArgs e) {
listBox1.Visible = false;
}
///
/// 消息处理
///
///
protected override void WndProc(ref Message m) {
//系统消息
if (m.Msg == 0x0112 && m.WParam.ToInt32() == 61458) {
if (TitleClick != null) TitleClick(this, null);
}
base.WndProc(ref m);
}
public event EventHandler TitleClick;
不只ComboBox 很多控制項都可以跟資料繫結

繫結的東東是 查詢完結果的資料集 (就是可以放到 XXX.DataSource = 右邊的東東)
然後把ComboBox的屬性設一設 他就會跟他繫結
請參照ADO.NET 魔術化的VS工具 - Combox繫結
你就會有以下效果


但是如果你希望你的ComboBox不只看得到name 也要看到id 或者其他欄位 怎辦?
像是 1.AAA 2.BBB 3.CCC

你會發現你無論如何 DisplayMember 或者 ValueMember 都只能挑這資料集的一個欄位
X,那不然就用2個ComboBox 一個裝name 一個裝id 再用foreach合體字串 再用foreach items.add 再...
當然可以,而且顯然方法百百種都可以達成,只是那就失去使用控制項資料繫結的便利性了
使用控制項資料繫結,只要將查詢完的資料指定給ComboBox 的DataSource 就可以免除寫items.add迴圈
既然要ComboBox Display 複數Member 很麻煩做的話 換個角度思考 把查詢結果直接便成最終格式就好了
使用T - SQL
生個新方法
搞定



對付惡魔 需要 對惡魔武器
對付資料庫亦同 於是 對資料庫用武器 - DaTa FeeDer 誕生
在程式設計的過程中,資料庫面臨的最大的麻煩是什麼呢?
正規化? NO
表格設計? NO
拉FK FK? NO
是餵資料進去測試的時候呀 ˊ3ˋ
再加上每人負責一部分 每人測自己的資料 那合體的時候怎辦
資料庫可以整個卸載 複製 附加 還是要 備份 復原 神馬的 都很簡單
但是要怎麼把部分有資料的表 合併到一個資料庫裡呢
難道當初A員不吃不喝不睡 花了幾天 手打KEY IN進的資料 要再KEY一遍?
試試 對資料庫用武器 - DaTa FeeDer 吧
照慣例圖解:
整體介面
會自動抓你電腦裡的資料庫有什麼

讀取表格後,右邊中央是編輯區
上面那區則是欄位的資訊
按下匯出XML即可把表格內的資料都存成XML檔
點下面的rank.xml,剛剛匯出的XML檔再右下角展示,確實已將rank表格複製起來
按下開啟資料夾,即可看到匯出XML的資料夾
以記事本打開就會看到XML的內容
惡搞一下,把編集區的rank_name都刪除,按下存回資料庫,以Management檢視,確實已刪除
按下載入編輯區,把原先備份到XML的資料再丟回編輯區,按下存回資料庫,按下存回資料庫,以Management檢視,確實已回復
不同行也能填入,選取「相同型態」的欄位,且格數須相等,按下載入選取
先前選取的資料已覆蓋編輯區選取的資料
http://mayhround.myweb.hinet.net/downloads/datafeeder.rar
繼上次我"意思到了"做出龍抓手游標之後
"我期待"能移動pictureBox了
今次終於動了
而且簡單到匪夷所思
private MouseEventArgs MouseStartPos = null;
private void pictureBox1_MouseDown(object sender, MouseEventArgs e) {
if (e.Button == MouseButtons.Left) {
MouseStartPos = e;
pictureBox1.Cursor = new Cursor(new Bitmap(Resources.Catch).GetHicon());
}
}
private void pictureBox1_MouseUp(object sender, MouseEventArgs e) {
pictureBox1.Cursor = new Cursor(new Bitmap(Resources.Palm).GetHicon());
}
private void pictureBox1_MouseMove(object sender, MouseEventArgs e) {
if (pictureBox1.Capture && e.Button == MouseButtons.Left) {
pictureBox1.Top = e.Y + pictureBox1.Location.Y - MouseStartPos.Y;
pictureBox1.Left = e.X + pictureBox1.Location.X - MouseStartPos.X;
pictureBox1.Cursor = new Cursor(new Bitmap(Resources.Catch).GetHicon());
}
}
pictureBox1.Cursor = new Cursor(new Bitmap(Resources.Catch).GetHicon())
是將資源裡的圖片轉換成滑鼠遊標的意思