我想用c#做一个WinForm项目,时间是一个星期,不知道做说明好?大家有说明高见?

我想用c#做一个WinForm项目,时间是一个星期,不知道做说明好?大家有说明高见?,第1张

如上图书管理

1建立数据库

表1:ID,书名,价格,库存

表2: ID,BookID, 详细说明

2建立界面项目

功能

1 实现 管理员 的录入(增加书)

2 实现 全部库存书的查看

3 客户购买书本自动 从库存中减去

其它功能体现自己想到再去完善

你可以假设自己是一个管理员,然后你每天要把新进的书录入到系统里

然后你可假设自己是一个客户,你想怎么样的界面去把书店里的书呈现到你面前

需求是永远在变的~如一楼所说 没有你做不到的,只有你想象不到、完善不了的~

考虑这个问题的话就是应该在lblContext的TextChanged时间里进行操作,当触发这个事件时,先去判断内容的长度

string text = lblContextText;

int num = 20; //设置一行的长度,根据具体需求来定

然后确定行数,再根据行数确定框的大小

int rows = text/20;

int h = lblContextSizeheight;//为label下移做准备

lblContextSizeheight = 4 rows;//假设一行高度为4

然后再将最后一个按任意键返回的label位置根据框的大小向下移

lblReturnlocationY += lblContextSizeheight;

lblReturnlocationY -= h;

C#WinForm优点:

1界面布局快且美观(控件很多),开发周期较短

2自定义控件制作使用很方便(扩展性很强)

C#WinForm缺点:

1可移植性比较差

2需要netframework支持

从界面开发角度来说。winform/wpf远胜于Qt/mfc。winform/wpf里界面有多少控件可选啊,Qt里才几个。从控件的属性来说,winform/wpf也丰富的多,而Qt感觉乏味。从开发工具来说,vs远胜QT QT的优点是可以跨平台,而winform/wpf不行。从开发语言来说,C#也优于C++。c#比C++诞生的晚,肯定吸收了c++,java等的优点,摒弃了缺点,从这一点说,c#比c++好。c++的优势在于驱动和底层开发上,对上位机开发来说,c#的许多特性(反射、委托、多线程等等),写法更简单,更符合人的思维逻辑,用起来更顺手,所以,用c#开发上位机更好。

如果内容控件被选中

键盘 检测上下左右按键

鼠标 MouseDown 记下鼠标位置 MouseUp再记下位置 比较两个的差值

将内容随之移动 当然 MouseMove也是可以的 但要这样做 一个类变量比如bool b MouseDown 的时候b=true MouseUp为false 当为true的时候内容随MouseMove移动

按钮事件的动态绑定!!

但是我不知道你的具体需求是什么,不好谢代码!!

我写个了简单的列子

界面上与3个按钮,button2,button3,button4,一个进度条progress1

button2的默认功能是改变进度,button3的功能是将button4的功能转移给button2

注意,线程中需要用invoke来调用,我这里为了省事,直接写了,各个控件的代码如下

// 改变进度的方法

private void profuc()

{

while (progressBar1Value!=100)

{

progressBar1Value += 1;

ThreadSleep(1000);

}

//恢复button2的功能

button2Click -= button4_Click;

button2Text = "进度";

button2Click +=new EventHandler(button2_Click);

}

// button2的点击事件

private void button2_Click(object sender, EventArgs e)

{

progressBar1Value = 0;

new Thread(profuc)Start();

}

// button3的点击事件

private void button3_Click(object sender, EventArgs e)

{

//改变button2的功能

button2Click -= button2_Click;

button2Text = "消息";

button2Click += new EventHandler(button4_Click);

}

// button4的点击事件

private void button4_Click(object sender, EventArgs e)

{

MessageBoxShow("我现在的功能是显示消息");

}

void Main()

{

Form f = new Form();

//声明坐标轴与屏幕转换的参数与方法

float xScale = 100;

float yScale = 100;

fSize = new Size(820,700);

PointF origin = new PointF(400,600);

Func<PointF, PointF> mapping = p=> {

return new PointF(originX+pXxScale,

originY - pYyScale);

};

fPaint += (o,e) => {

var g = eGraphics;

//绘制坐标轴

gDrawLine(PensBlack, mapping(new PointF(-10,0)),mapping(new PointF(10,0)));

for(int x=-10;x<=10;x++) 

gDrawString(xToString(), fFont, BrushesBlack, mapping(new PointF(x,0)));

gDrawLine(PensBlack, mapping(new PointF(0,-10)),mapping(new PointF(0,10)));

for(int y=1;y<=10;y++) 

gDrawString(yToString(), fFont, BrushesBlack, mapping(new PointF(0,y)));

//抗锯齿 曲线平滑

gSmoothingMode = SystemDrawingDrawing2DSmoothingModeHighQuality;

//声明一个对指定数学函数描点绘制的方法

Action<Func<float, float>> DrawArc = func => {

Pen pen = new Pen(ColorIndigo, 3f);

List<PointF> points = new List<PointF>();

for(float x=-10;x<=10;x+=001f) {

pointsAdd(mapping(new PointF(x,func(x))));

}

gDrawLines(pen, pointsToArray());

penDispose();

};

//执行绘制 y=04^x

DrawArc(x=>(float)MathPow(04f, x));

//执行绘制 y=25^x

DrawArc(x=>(float)MathPow(25f, x));

};

ApplicationRun(f);

}

大致上就是用GDI+了。。这是个大致的例子。。具体的参数泥可以随意调整试试。

欢迎分享,转载请注明来源:浪漫分享网

原文地址:https://hunlipic.com/langman/467402.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-06-30
下一篇2023-06-30

发表评论

登录后才能评论

评论列表(0条)

    保存