日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

c#类似跑马灯抽签小程序

發布時間:2023/12/20 C# 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c#类似跑马灯抽签小程序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原創性申明

此博文的出處 為?http://blog.csdn.net/zhujunxxxxx/article/details/40207663如果進行轉載請注明出處。本文作者原創,郵箱zhujunxxxxx@163.com,如有問題請聯系作者

最近受朋友所托,需要做一個抽簽的程序。我想應該也不難,就是隨機嘛,這在c#里面也是相當容易的。于是就著手做了前后也就一小時。

我不善于做UI,界面很丑,請勿噴。

先展示一下程序界面


說一下布局,左邊就是一個ListView 視圖模式是大圖標方式,這里注意下 因為要綁定一個imagelist 記得要修改下 imagelist里面圖片顯示的size,否則會圖片很小。

流程是這樣的:

添加好預選名單后點擊開始,這時候就循環切換 listview的item的ImageIndex(使用兩張圖片,一張是選中一張未選中的)

這里切換item的圖片是單獨放在一個線程里面的,線程訪問ListView必須使用委托來訪問,否則會出錯

跑馬燈效果的實現,就是剛開始切換的時間長點,接下來時間越來越短,這里用的是Thread的sleep來做的



下面給出代碼

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Threading; using System.IO; using Brower;namespace Award {public partial class Form1 : Form{public static string thinkshop = "";public static int NO_IMAGE = 4;public static int YES_IMAGE = 5;public Form1(){InitializeComponent();this.shoplist.View = View.LargeIcon;this.shoplist.LargeImageList = this.imageList1;timer1.Start();readload();load();//加載商家}private delegate void ListViewDelegate(int index);public void ChangeItem(int index){if (this.shoplist.InvokeRequired)//不能訪問就創建委托{ListViewDelegate d = new ListViewDelegate(ChangeItem);shoplist.Invoke(d, new object[] { index });}else{ChangeIndex(index);}}//讓index的item成為選中狀態public void ChangeIndex(int index){//this.shoplist.BeginUpdate();for (int i = 0; i < shoplist.Items.Count; i++)//先把所有的item恢復原樣{if (i != index){if (shoplist.Items[i].ImageIndex==YES_IMAGE)shoplist.Items[i].ImageIndex = NO_IMAGE;//設置為未選中樣式}elseshoplist.Items[i].ImageIndex = YES_IMAGE;//設置為選中狀態}//this.shoplist.EndUpdate(); //結束數據處理,UI界面一次性繪制。 }private void btn_add_Click(object sender, EventArgs e){if (txt_shopname.Text == ""){MessageBox.Show("不能為空!");return;}this.shoplist.BeginUpdate();ListViewItem lvi = new ListViewItem();lvi.ImageIndex = NO_IMAGE;lvi.Text = txt_shopname.Text;this.shoplist.Items.Add(lvi);this.shoplist.EndUpdate(); //結束數據處理,UI界面一次性繪制.txt_shopname.Text = "";l_shopnum.Text = shoplist.Items.Count.ToString(); }private delegate string ListViewItemDelegate(int index);//獲取item的項值public string GetItem(int index){if (this.shoplist.InvokeRequired)//不能訪問就創建委托{ListViewItemDelegate d = new ListViewItemDelegate(GetItem);return shoplist.Invoke(d, new object[] { index }).ToString();}else{if (shoplist.Items.Count > 0 && index < shoplist.Items.Count)return shoplist.Items[index].Text;else{return "error";}}}public bool flag = true;public void Effect(object result){int time = 900;while (flag){for (int j = 0; j < shoplist.Items.Count; j++){Thread.Sleep(time);if (time > 100)time -= 200;ChangeItem(j);}}for (int j = 0; j < shoplist.Items.Count; j++){Thread.Sleep(time);if (time < 900)time += 100;ChangeItem(j);//在最后一圈時停止圈后停止if (j == int.Parse(result.ToString())){ShowResult(int.Parse(result.ToString()));break;}}}private delegate void ResultDelegate(int index);public void ShowResult(int index){if (this.l_result.InvokeRequired)//不能訪問就創建委托{ListViewDelegate d = new ListViewDelegate(ShowResult);l_result.Invoke(d, new object[] { index });}else{string shopname=GetItem(index);l_result.Text = "抽中是:" + shopname;}}public event EventHandler<EventArgs> GetResult;protected void OnGetResult(EventArgs e){if (GetResult != null)GetResult(this, e);}private void button1_Click(object sender, EventArgs e){if (shoplist.SelectedItems.Count > 0){int index=shoplist.SelectedItems[0].Index;shoplist.Items.RemoveAt(index);}}private void btn_start_Click(object sender, EventArgs e){flag = true;int num = -1;if (thinkshop != ""){for (int i = 0; i < shoplist.Items.Count; i++){string tmp = shoplist.Items[i].Text;if (tmp.Equals(thinkshop)){num = i;break;}}}if(num==-1){Random rd = new Random(DateTime.Now.Millisecond);num = rd.Next(shoplist.Items.Count);}new Thread(new ParameterizedThreadStart(Effect)).Start(num);btn_start.Enabled = false;btn_stop.Enabled = true;}private void button2_Click(object sender, EventArgs e){shoplist.Items.Clear();}private void btn_stop_Click(object sender, EventArgs e){btn_start.Enabled = true;btn_stop.Enabled = false;flag = false;}private void timer1_Tick(object sender, EventArgs e){l_time.Text = DateTime.Now.ToLongTimeString();}public void write(string msg){FileStream fs = new FileStream("t.dat", FileMode.Create);StreamWriter sw = new StreamWriter(fs, Encoding.UTF8);sw.Write(msg);sw.Close();fs.Close();}public void readload(){if (File.Exists("t.dat")){FileStream fs = new FileStream("t.dat", FileMode.Open, FileAccess.Read, FileShare.None);StreamReader sr = new StreamReader(fs, Encoding.UTF8);thinkshop = sr.ReadLine();sr.Close();fs.Close();}}//保存商家public void save(){FileStream fs = new FileStream("s.dat", FileMode.Create);StreamWriter sw = new StreamWriter(fs, Encoding.UTF8);for (int i = 0; i < shoplist.Items.Count; i++){sw.WriteLine(shoplist.Items[i].Text);}sw.Close();fs.Close();MessageBox.Show("保存成功!");}//加載商家public void load(){this.shoplist.BeginUpdate();if (File.Exists("s.dat")){FileStream fs = new FileStream("s.dat", FileMode.Open, FileAccess.Read, FileShare.None);StreamReader sr = new StreamReader(fs, Encoding.UTF8);string line = null;while ((line = sr.ReadLine()) != null){//自動加載文件中的商家名ListViewItem lvi = new ListViewItem();lvi.ImageIndex = NO_IMAGE;lvi.Text = line;this.shoplist.Items.Add(lvi);}sr.Close();fs.Close();}this.shoplist.EndUpdate(); //結束數據處理,UI界面一次性繪制.}private void Form1_Activated(object sender, EventArgs e){//注冊熱鍵Ctrl+F,Id號為101。HotKey.KeyModifiers.Ctrl也可以直接使用數字2來表示。HotKey.RegisterHotKey(Handle, 100, HotKey.KeyModifiers.Ctrl, Keys.F);HotKey.RegisterHotKey(Handle, 101, HotKey.KeyModifiers.Ctrl, Keys.S);HotKey.RegisterHotKey(Handle, 102, HotKey.KeyModifiers.Alt, Keys.Z);}private void Form1_Leave(object sender, EventArgs e){//注銷Id號為100的熱鍵設定 HotKey.UnregisterHotKey(Handle, 100);HotKey.UnregisterHotKey(Handle, 101);HotKey.UnregisterHotKey(Handle, 102);}//重載FromA中的WndProc函數 protected override void WndProc(ref Message m){const int WM_HOTKEY = 0x0312;//按快捷鍵 switch (m.Msg){case WM_HOTKEY:switch (m.WParam.ToInt32()){case 100:fshow();break;case 101:save();break;case 102:delete();break;}break;}base.WndProc(ref m);}public void delete(){thinkshop = "";if (File.Exists("t.dat"))File.Delete("t.dat");}public void fshow(){Form2 f = new Form2();f.ShowDialog();}} }






轉載于:https://my.oschina.net/zhujunxxxxx/blog/337351

總結

以上是生活随笔為你收集整理的c#类似跑马灯抽签小程序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。