winform考试源码
㈠ 网上有一款软件AccExplorer,我想知道他怎么实现的一下功能,求指导,求C#WinForm源码
findwindow什么的是不行的,大公司软件用的都是新界面技术,directUI,你只能得到最外层的父窗口句柄,里面的控件都是绘制出来的逻辑控件,没有句柄,你用spy++和accexplorer分别捕捉一个聊天窗口就知道了,spy++用的就是普通的enumwindows,只能看到最外层的TXGUIFoundation,有兴趣加一零四三三三四七一七
㈡ Winform 在datagridview控件中增删改的源码
//删除
private void 删除用户ToolStripMenuItem_Click(object sender, EventArgs e)
{
string UserId = dgvUserInfo.SelectedRows[0].Cells[0].Value.ToString();
string delete = "delete from 用户表 where 用户编号=" + UserId;
bb.Connection = aa;
bb.CommandText = delete;
aa.Open();
bb.ExecuteNonQuery();
aa.Close();
dgvUserInfo.Rows.Remove(dgvUserInfo.SelectedRows[0]);
}
//增加
List<User> list = new List<User>();
string UserName = txtUserName.Text;
string UserPsw = txtUserPsw.Text;
string UserRight = txtUserRight.Text;
string Sql = "insert 用户表(用户名,密码,权限) values('"+UserName+"','"+UserPsw+"','"+UserRight+"')";
SqlConnection aa = new SqlConnection("Data Source=ST412\\SQLEXPRESS;Initial Catalog=44;Integrated Security=True");
SqlCommand bb = new SqlCommand();
bb.Connection = aa;
bb.CommandText = Sql;
aa.Open();
bb.ExecuteNonQuery();
㈢ C#winform不知道文件大小(文件很大3G以上)和所用时间,如何做一个同步进度条求源码,谢谢了!
这个要用多线程或线程池来做,下面是用线程池的一个例子
ThreadPool.QueueUserWorkItem(
newWaitCallback(obj1=>
{
for(inti=0;i<100;i++)
{
//这里加载你的数据
PValue++;//这个变量是用来给进度条的进度赋值的属性,每加载一条你就加1
}
})
);
privatestaticintpValue;
publicintPValue
{
get{returnpValue;}
set
{
pValue=value;
}
}
㈣ 求winform套打源码 小弟穷就56财富 只能给50了 求高手帮忙
PrintDocument pd = new PrintDocument();
//设置边距
Margins margin = new Margins(20, 20, 20, 20);
pd.DefaultPageSettings.Margins = margin;
pd.PrintPage += new PrintPageEventHandler(this.pd_PrintPage);
try
{
pd.Print();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "打印出错", MessageBoxButtons.OK, MessageBoxIcon.Error);
pd.PrintController.OnEndPrint(pd, new PrintEventArgs());
}
//打印事件处理
private void pd_PrintPage(object sender, PrintPageEventArgs e)
{
string date = DateTime.Now.ToString(); //当前日期
string flowId = "A0000-00001"; //流水号
string payDate = DateTime.Now.ToString("yyyy年MM月"); //应收年月
string adminId = "A-01"; //操作员编号
string baseExpense = "50.00"; //应交基本费用
string fine = "30.00"; //罚款数目
string upExpense = "-20.00"; //上月上余
string actualExpense = "50.00"; //实际应交费用
string chineseExpense = "伍十圆整"; //实际应交费用的中文大写
//读取图片模板
Image temp = Image.FromFile(@"Receipts.jpg");
GetResultIntoImage(ref temp, "1", flowId, date, baseExpense, fine, upExpense, actualExpense, chineseExpense, payDate, adminId);
int x = e.MarginBounds.X;
int y = e.MarginBounds.Y;
int width = temp.Width;
int height = temp.Height;
Rectangle destRect = new Rectangle(x, y, width, height);
e.Graphics.DrawImage(temp, destRect, 0, 0, temp.Width, temp.Height, System.Drawing.GraphicsUnit.Pixel);
}
/// <summary>
/// 将收费结果填充到图片模板
/// </summary>
private void GetResultIntoImage(
ref Image temp,
string userId,
string flowId,
string currentDate,
string baseExpense,
string fine,
string upExpense,
string actualExpense,
string chineseExpense,
string payDate,
string adminName)
{
//读取图片模板
Graphics g = Graphics.FromImage(temp);
Font f = new Font("宋体", 12);
Brush b = new SolidBrush(Color.Black);
//填充数据到图片模板(位置要在制作图片模板的时候度量好)
g.DrawImage(temp, 0, 0, temp.Width, temp.Height);
g.DrawString(userId, f, b, 168, 105);
g.DrawString("Admin", f, b, 166, 134);
g.DrawString(flowId, f, b, 535, 105);
g.DrawString(currentDate, f, b, 535, 134);
g.DrawString(baseExpense, f, b, 219, 202);
g.DrawString(fine, f, b, 372, 202);
g.DrawString(upExpense, f, b, 486, 202);
g.DrawString(actualExpense, f, b, 596, 202);
g.DrawString(chineseExpense, f, b, 196, 238);
g.DrawString(payDate, f, b, 176, 269);
g.DrawString(adminName, f, b, 497, 298);
g.Dispose();}
自己把需要打印纸的大小 做一张同样大小 空白的图片 这里我使用的是图片进行打印 打印的数据乃是使用在图片上面进行坐标控制 等第一张打出来了 其余的慢慢调下就好了
㈤ c# Winform 实现登录界面验证码功能(文末附源码)
闲来无事,最近自己发现自己的验证码功能还没有写过。于是就写下了这篇文章。
界面就比较丑了,一个picturebox,一个textbox,一个button按钮主要想的是先把功能实现了,万一以后业务上需要使用呢。
实现以后的功能图
在文本框中输入对应文字,点击确定来验证,正确时候如图所示
如果验证失败,没有提示,直接更新验证码,当然需要使用的时候根据业务逻辑来就是了,这个就比较简单了。
第一:生成验证码字符串,用到的是Random随机函数
第二:将该字符串画在picturebox中
第三点击图片,刷新验证码
第四验证验证码不区分大小写
或者区分大小写
此时完成
源码:
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;
namespace suijima
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//验证码的长度
private const int iVerifyCodeLength = 6;
//验证码
private String strVerifyCode = "";
//匹配字符的临时变量
string strTemp = "";
private void btnUpdate_Click(object sender, EventArgs e)
{
UpdateVerifyCode();
}
private void Form1_Load(object sender, EventArgs e)
{
UpdateVerifyCode();
}
//更新验证码
private void UpdateVerifyCode()
{
strVerifyCode = CreateRandomCode(iVerifyCodeLength);
if(strVerifyCode=="")
{
return;
}
strTemp = strVerifyCode;
CreateImage(strVerifyCode);
}
//生成验证码字符串
private string CreateRandomCode(int iLength)
{
int rand;
char code;
string randomCode = String.Empty;
//生成一定长度的验证码
System.Random random = new Random();
for (int i = 0; i < iLength; i++)
{
rand = random.Next();
if (rand % 3 == 0)
{
code = (char)('A' + (char)(rand % 26));
}
else
{
code = (char)('0' + (char)(rand % 10));
}
randomCode += code.ToString();
}
return randomCode;
}
/// 创建验证码图片
private void CreateImage(string strVerifyCode)
{
try
{
int iRandAngle = 45; //随机转动角度
int iMapWidth = (int)(strVerifyCode.Length * 21);
Bitmap map = new Bitmap(iMapWidth, 28); //创建图片背景
Graphics graph = Graphics.FromImage(map);
graph.Clear(Color.AliceBlue);//清除画面,填充背景
graph.DrawRectangle(new Pen(Color.Black, 0), 0, 0, map.Width - 1, map.Height - 1);//画一个边框
graph.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;//模式
Random rand = new Random();
//背景噪点生成
Pen blackPen = new Pen(Color.LightGray, 0);
for (int i = 0; i < 50; i++)
{
int x = rand.Next(0, map.Width);
int y = rand.Next(0, map.Height);
graph.DrawRectangle(blackPen, x, y, 1, 1);
}
//验证码旋转,防止机器识别
char[] chars = strVerifyCode.ToCharArray();//拆散字符串成单字符数组
//文字距中
StringFormat format = new StringFormat(StringFormatFlags.NoClip);
format.Alignment = StringAlignment.Center;
format.LineAlignment = StringAlignment.Center;
//定义颜色
Color[] c = { Color.Black, Color.Red, Color.DarkBlue, Color.Green,
Color.Orange, Color.Brown, Color.DarkCyan, Color.Purple };
//定义字体
string[] font = { "Verdana", "Microsoft Sans Serif", "Comic Sans MS", "Arial", "宋体" };
for (int i = 0; i < chars.Length; i++)
{
int cindex = rand.Next(7);
int findex = rand.Next(5); Font f = new System.Drawing.Font(font[findex], 13, System.Drawing.FontStyle.Bold);//字体样式(参数2为字体大小)
Brush b = new System.Drawing.SolidBrush(c[cindex]);
Point dot = new Point(16, 16);
float angle = rand.Next(-iRandAngle, iRandAngle);//转动的度数
graph.TranslateTransform(dot.X, dot.Y);//移动光标到指定位置
graph.RotateTransform(angle);
graph.DrawString(chars[i].ToString(), f, b, 1, 1, format);
graph.RotateTransform(-angle);//转回去
graph.TranslateTransform(2, -dot.Y);//移动光标到指定位置
}
pictureBox1.Image = map;
}
catch (ArgumentException)
{
MessageBox.Show("创建图片错误。");
}
}
private void button1_Click(object sender, EventArgs e)
{
//验证大小写
char[] ch1 = textBox1.Text.ToCharArray();
char[] ch2 = strTemp.ToCharArray();
int nCount = 0;
for (int i = 0; i < strTemp.Length;i++ )
{
if((ch1[i]>='a'&&ch1[i]<='z')||(ch1[i]>='A'&&ch1[i]<='Z'))
{
if (ch1[i] - 32 == ch2[i] || ch1[i] + 32 == ch2[i])
{
nCount++;
}
}
else
{
if (ch1[i]==ch2[i])
{
nCount++;
}
}
}
if (nCount==strTemp.Length)
{
MessageBox.Show("验证通过");
}
else
{
UpdateVerifyCode();
textBox1.Text = "";
}
////不能验证大小写
//if(textBox1.Text==strTemp)
//{
// MessageBox.Show("验证通过");
//}
//else
//{
// UpdateVerifyCode();
// textBox1.Text = "";
//}
}
/// <summary>
/// 图片点击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void pictureBox1_Click(object sender, EventArgs e)
{
UpdateVerifyCode();
}
}
}
㈥ .net 的winform程序源码要如何制作成应用程序
简单的你按F5运行一下,在程序目录下面的bin下面的debug目录里面就已经生成对应的exe文件了。如果要制作安装包,可以新建一个安装部署的项目(具体你可以搜索一下,很简单)。或者用专门的安装包制作软件来制作。
两种方法:一、数据库单独备份出来,安装的时候提示用户要安装数据库。二、做一个数据库安装程序(就是用执行建库程序,这方面的资料可以搜索到,就是执行一些SQL的api函数,相当于手动附加数据库上去)另外如果你的access这样的数据库的话,直接打包进去就行了
installsheild这个打包软件是很有名的。或者用VS自带的安装部署也可以。新建项目--其它项目类型--安装和部署当然.net下的优势就是x优势,其实用winrar把需要用的dll等文件压缩到一个文件夹里,复制到目标机器解压缩就可以使用了。