整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

1024 程序员节,用24种语言祝福大家节日快乐,代码无bug

024 程序员节, 用23种语言祝福大家,节日快乐,代码无bug,什么是程序员呢,指的是从事程序开发、维护的专业人员。一般将程序员分为程序设计人员和程序编码人员,但两者的界限并不非常清楚,特别是在中国。在外行的眼中,枯燥乏味的工作内容,加班工作和夜晚成为家常便饭,使大多数程序员经常成为被嘲笑的对象,“忙到哭”、“累到瘫痪”、 “不回家”、“单身狗”......虽然程序员工资很高,但他们真的很辛苦,如果没有他们在程序开发和维护方面的工作,人们在技术时代的生活无疑将是困难的。计算机科学发展到现在,程序员从业者很多,他们的分工不一样,一般从大方面分为以下几类: delphi程序员、 php程序员、 C程序员、 linux程序员, vb程序员、 java程序员、 javascript程序员、 C ++程序员、 Python程序员、 android程序员、 iOS程序员,全栈程序员等等。程序员使用代码来改变世界,在这个浮躁的世界中, 坚持追求知识、技术和创新,确实不易。

周到的程序员编码在傍晚回家

下面我用23种语言祝程序员节日快乐,语言不分排名先后,,,

一.Java程序员

代码:

#FileName: ProgramDay.java

public class ProgramDay #

{

#Java 入口程序,程序从此入口

public static void main(String[] args)

{

System.out.println("1024程序员节日快乐!");

}

}

二.C程序员

代码

#include <stdio.h>

int main() #main 入口函数

{

printf("1024程序员节日快乐!!"); #打印节日快乐

return 0;

}

三.C++程序员

代码:

#include <iostream> //std::cout 要用到的头文件

#include <stdio.h> //标准输入输出头文件

int main()

{

printf("1024程序员节日快乐\n"); //printf 语句打印

return 0;

}

四.Python程序员

我最喜欢的语言之一,人生苦短我用python,多么简洁的语句,完美,,,

代码

>>> print "1024程序员节日快乐" #Python 2.x

>>> print("1024程序员节日快乐") #Python 3.x

五.C# 程序员

C# 其实和 Java 非常相像,需要设置环境变量,当年一门和java 抗衡的语言,最近几年似乎用它做游戏蛮多的,特别是unity方面,

代码

//FileName: ProgramDay.cs

using System;

class ProgramDay

{

public static void Main()

{

Console.WriteLine("1024程序员节日快乐");

}

}

六.PHP程序员

代码

<!DOCTYPE html>

<body>

<?php

echo "1024程序员节日快乐"; //打印语句

?>

</body>

</html>

七. JavaScript(可能是前端也可能是后端的程序员)

代码

<script type="text/javascript">

alert("1024程序员节日快乐!");

</script>

八.Ruby

我最近的用途是在ios pod库部署环境时候,用了一下

代码

def say(name)

"#{name}"

end

puts say("1024程序员节日快乐!")

九.R

代码

在console中输入

print("1024程序员节日快乐")

十.SQL

代码

SQL> select '1024程序员节日快乐' from dual;

十一.Perl

代码

#!C:\Perl\bin #Windows 平台下

#!/usr/bin/env perl #Linux 环境下

print "1024程序员节日快乐!\n";

十二. HTML

<!DOCTYPE html>

<html>

<body>

<p>1024程序员节日快乐!</p>

</body>

</html>

十三.Scala

Scala 是一门把面向对象和函数式编程思想加入静态类型中的编程语言,

代码

object ProgramDay {

def main(args:Array[String])

{

println("1024程序员节日快乐!");

}

}

十四.Shell

代码

WINDOWS系统下,

D:\ProgramDay >echo "1024程序员节日快乐!"

十五.Delphi

procedure TForm1.Button1Click(Sender: TObject);

begin

label1.Caption := '1024程序员节日快乐!';

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

end;

end.

十六.Fortran

Fortran 是最早出现的计算机语言,主要用于科学及工程计算领域,这一点和 Python 相同

program programday

print *,"1024程序员节日快乐!"

end program programday

十七.Go

代码

package main

import "fmt"

func main() {

fmt.Printf("1024程序员节日快乐.\n")

}

十八.Oc

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {

//创建一个自动释放池

@autoreleasepool {

NSLog(@"1024程序员节日快乐!");

}

return 0;

}

十九.Actionscript

代码

var str:String="1024程序员节日快乐";

//定义一个函数,为clickEvent

var clickEvent:Function=function(){

//此函数触发之后,把Label1的文本改成str

Label1.text= str;

//然后向控制台输出str

trace(str);

}

//之后为Button1添加点击事件的监听器,为clickEvent这个函数

Button1.addEventListener("click",clickEvent);

二十.Matlab

代码

.m文件

function ProgramDay ()%输出1024程序员节日快乐!% Detailed explanation goes heredisp('1024程序员节日快乐!');End

二十一.swift

代码

import Foundation

print("1024程序员节日快乐!")

二十二.awk

代码

[root@Linux ~]# echo | awk '{print "1024程序员节日快乐!"}'

二十三.kotlin

代码

fun main(args: Array<String>) {

println("1024程序员节日快乐!")

}

二十四.Pascal

代码

Program ProgramDay(output); begin

writeln('1024程序员节日快乐') end

这么多语言,可以看出做程序的辛苦,加油吧,同志们!

两天在网上不小心看到“js许愿墙”这几个字,我的神经就全部被调动了。然后就开始我的百度生涯,一直寻觅许愿墙背景图片和便利贴图片,觅了好久……一直没找到满意的……无意间看到祝福语和一些卡通婚礼图片。最终我决定用jquery制作一个小型婚礼,并且实现添加祝福语的功能。

音乐响起来,开始我的婚礼进行曲~

一、婚礼演示图

场景一:

场景二:

场景三:

场景四:

 场景五:

场景六:

场景七:

添加祝福语:

二、html代码

<div class="box">
 <!-- 场景一 -->
 <div class="first-box">
 <div class="first-horn">
 <img src="images/first_horn.jpg"/>
 </div>
 <div class="first-txt">
 <div class="txt1"><img src="images/first_txt1.jpg"/></div>
 <div class="txt2"><img src="images/first_txt2.jpg"/></div>
 </div>
 </div>
 <!-- 场景二 -->
 <div class="second-box">
 <div class="second-people">
 <img src="images/second_people.jpg"/>
 </div>
 <div class="second-txt">
 <img src="images/second_txt.jpg"/>
 </div>
 </div>
 <!-- 场景三 -->
 <div class="three-box">
 <div class="three-img">
 <img src="images/three_img.jpg"/>
 </div>
 </div>
 <!-- 场景四 -->
 <div class="fore-box">
 <div class="fore-img">
 <img src="images/fore_img.jpg"/>
 </div>
 </div>
 <!-- 场景五 -->
 <div class="five-box">
 <div class="five-img">
 <img src="images/five_img.jpg"/>
 <div class="u-enter">进入婚礼</div>
 </div>
 </div>
 <!-- 场景六 -->
 <div class="six-box">
 <div></div>
 <div></div>
 <div></div>
 <div></div>
 <div></div>
 <div></div>
 <div></div>
 <div></div>
 <div></div>
 <div></div>
 <div></div>
 <div></div>
 <div></div>
 <div></div>
 <div></div>
 <div></div>
 </div>
 <!-- 场景七 -->
 <div class="seven-box">
 <div class="clickMe">点我送祝福</div>
 <div class="seven-content">
 <div class="note-a1"></div>
 <div class="note-a2"></div>
 <div class="note-a3"></div>
 <div class="note-a4"></div>
 <div class="note-a5"></div>
 <div class="note-a6"></div>
 <div class="note-a7"></div>
 <div class="note-a8"></div>
 <div class="note-a9"></div>
 <div class="note-a10"></div>
 <div class="note-a11"></div>
 <div class="note-a12"></div>
 <div class="note-1">一定要幸福哦~</div>
 <div class="note-2">祝你们白头偕老!</div>
 <div class="note-3">早生贵子~</div>
 <div class="note-4">新婚快乐~</div>
 <div class="note-5">生个宝宝认我做干妈!</div>
 <div class="note-6">喜结良缘O(∩_∩)O哈哈哈~</div>
 <div class="note-1">一定要幸福哦~</div>
 <div class="note-2">祝你们白头偕老!</div>
 <div class="note-3">早生贵子~</div>
 <div class="note-4">新婚快乐~</div>
 <div class="note-5">生个宝宝认我做干妈!</div>
 <div class="note-6">喜结良缘O(∩_∩)O哈哈哈~</div>
 </div>
 </div>
 </div>
 <!-- 遮罩层 -->
 <div class="mask"></div>
 <div class="pop-box">
 <h1>送上祝福语</h1>
 <textarea id="write">写上您的祝福吧~</textarea>
 <div class="u-sure" id="uSure">确定</div>
 </div>

三、js代码

场景一:

var $firstHorn = $(".first-horn"), /* 场景一左边喇叭 */
 $firstTxt = $(".first-txt"), /* 场景一文字div */
 firstTxtWidth = $firstTxt.width(), /* 文字div的宽度 */
 $secondBox = $(".second-box"), /* 场景二box */
 $secondPeople = $(".second-people"), /* 场景二左边人物 */
 $secondTxt = $(".second-txt"), /* 场景二右边文字 */
 $threeBox = $(".three-box"), /* 场景三box */
 $threeImg = $(".three-img"), /* 场景三图片 */
 $foreBox = $(".fore-box"), /* 场景四box */
 $foreImg = $(".fore-img"), /* 场景四图片 */
 $fiveBox = $(".five-box"), /* 场景五box */
 $fiveImg = $(".five-img"), /* 场景五中间图片 */
 $uEnter = $(".u-enter"), /* 进入婚礼按钮 */
 $sixBox = $(".six-box"), /* 场景六box */
 $sixDiv = $sixBox.find("div"), /* 场景六里面小块div */
 sixDivWidth = $sixDiv.width(), /* 场景六里面小块div的宽度 */
 sixDivHeight = $sixDiv.height(), /* 场景六里面小块div的高度 */
 sixBoxWidth = $sixBox.width(), /* 场景六宽度 */
 sixBoxHeight = $sixBox.height(),/* 场景六高度 */
 $sevenBox = $(".seven-box");
 /* 场景一 */
 $firstHorn.animate({left: 0},1000);
 $firstTxt.animate({left: "435px"},function(){
 $firstTxt.fadeIn(1000);
 showTxt($firstTxt.find("div:eq(0)")); /* 显示第一行文字 */
 setTimeout(function(){showTxt($firstTxt.find("div:eq(1)"));},3000); /* 显示第二行文字 */
 setTimeout(scene2,7000); /* 进入场景二 */
 });
 /* 显示文字 */
 function showTxt($obj){
 for(var i = 0; i < 8; i++){
 (function(){
 $obj.animate({width: firstTxtWidth*(i+1)+"px"}); /* 根据i值,width逐渐变大 */
 })(i)
 }
 }

描述:场景一主要有两个功能,第一个是控制左边图片,第二个是让右边文字逐一显示。

场景二:

/* 场景二 */
 function scene2(){
 $firstTxt.fadeOut();
 $firstHorn.animate({left: "-422px"},function(){
 $secondBox.show();
 $secondPeople.animate({left: "0"});
 $secondTxt.animate({left: "230px"},function(){
 $secondTxt.fadeIn(1000);
 setTimeout(scene3,2000); /* 进入场景三 */
 });
 });
 }

描述:场景二功能简单一点,只控制左边人物出现,紧接着是文字显示。

添加祝福语:

/* 点我送祝福 */
 $clickMe.click(function(){
 $write.val("送上您的祝福吧~");
 $mask.fadeIn();
 $popBox.animate({top: "50%"});
 })
 /* 获取焦点时 */
 $write.focus(function(){
 var _val = $(this).val();
 if(_val == "送上您的祝福吧~"){
 $(this).val("");
 }
 })
 /* 丢失焦点时 */
 $write.blur(function(){
 var _val = $(this).val();
 if(_val.length == 0){
 $(this).val("送上您的祝福吧~");
 }
 })
 /* 点击确定 */
 $uSure.click(function(){
 var _writeVal = $write.val();
 var _randomNum = Math.ceil(Math.random()*6);
 if(_writeVal != "送上您的祝福吧~"){
 var _div = '<div class="note-'+_randomNum+'">'+_writeVal+'</div>';
 $sevenContent.append(_div); /* 如果输入祝福语,将此标签添加的尾部 */
 defineSevenDiv($sevenContent.find("div:last"));
 $popBox.animate({top: "-300px"},function(){
 $mask.fadeOut();
 draggableNote(); /* 可拖动卡片,给新添加的标签赋予拖动功能 */
 });
 }else{
 alert("请输入祝福语!");
 }
 })

描述:添加祝福语中,需填写祝福语,否则不让提交。可提交的祝福语便随机散布在祝福墙中,可实现随意拖动功能。

js所有代码:

/**
 * User: wei ya
 * Date: 14-6-12
 * Time: 下午8:08
 * 小型婚礼
 */
$(function(){
 var $firstHorn = $(".first-horn"), /* 场景一左边喇叭 */
 $firstTxt = $(".first-txt"), /* 场景一文字div */
 firstTxtWidth = $firstTxt.width(), /* 文字div的宽度 */
 $secondBox = $(".second-box"), /* 场景二box */
 $secondPeople = $(".second-people"), /* 场景二左边人物 */
 $secondTxt = $(".second-txt"), /* 场景二右边文字 */
 $threeBox = $(".three-box"), /* 场景三box */
 $threeImg = $(".three-img"), /* 场景三图片 */
 $foreBox = $(".fore-box"), /* 场景四box */
 $foreImg = $(".fore-img"), /* 场景四图片 */
 $fiveBox = $(".five-box"), /* 场景五box */
 $fiveImg = $(".five-img"), /* 场景五中间图片 */
 $uEnter = $(".u-enter"), /* 进入婚礼按钮 */
 $sixBox = $(".six-box"), /* 场景六box */
 $sixDiv = $sixBox.find("div"), /* 场景六里面小块div */
 sixDivWidth = $sixDiv.width(), /* 场景六里面小块div的宽度 */
 sixDivHeight = $sixDiv.height(), /* 场景六里面小块div的高度 */
 sixBoxWidth = $sixBox.width(), /* 场景六宽度 */
 sixBoxHeight = $sixBox.height(),/* 场景六高度 */
 $sevenBox = $(".seven-box");
 /* 场景一 */
 $firstHorn.animate({left: 0},1000);
 $firstTxt.animate({left: "435px"},function(){
 $firstTxt.fadeIn(1000);
 showTxt($firstTxt.find("div:eq(0)")); /* 显示第一行文字 */
 setTimeout(function(){showTxt($firstTxt.find("div:eq(1)"));},3000); /* 显示第二行文字 */
 setTimeout(scene2,7000); /* 进入场景二 */
 });
 /* 显示文字 */
 function showTxt($obj){
 for(var i = 0; i < 8; i++){
 (function(){
 $obj.animate({width: firstTxtWidth*(i+1)+"px"}); /* 根据i值,width逐渐变大 */
 })(i)
 }
 }
 /* 场景二 */
 function scene2(){
 $firstTxt.fadeOut();
 $firstHorn.animate({left: "-422px"},function(){
 $secondBox.show();
 $secondPeople.animate({left: "0"});
 $secondTxt.animate({left: "230px"},function(){
 $secondTxt.fadeIn(1000);
 setTimeout(scene3,2000); /* 进入场景三 */
 });
 });
 }
 /* 场景三 */
 function scene3(){
 $secondBox.hide();
 $threeBox.fadeIn();
 for(var i = 0; i < 6; i++){ /* 控制图片跳转频率 */
 if(i==0){
 $threeImg.css({left:0,top:0});
 }else if(i%2==0){
 $threeImg.animate({left: 40*i+"px",top: 30*i+"px"},80*(6-i));
 }else{
 $threeImg.animate({left: 40*i+"px",top: "200px"},80*(6-i));
 }
 }
 setTimeout(scene4,2500); /* 进入场景四 */
 }
 /* 场景四 */
 function scene4(){
 $threeBox.hide();
 $foreBox.fadeIn();
 $foreImg.animate({top: "80px"},1000);
 setTimeout(scene5,2500); /* 进入场景五 */
 }
 /* 场景五 */
 function scene5(){
 $foreImg.animate({left: "960px"},function(){
 $fiveBox.fadeIn();
 $fiveBox.find("img").css({"transform": "scale(1)"});
 $uEnter.click(function(){
 $fiveBox.hide();
 setTimeout(scene6,400); /* 进入第六场景 */
 })
 });
 }
 /* 场景六 */
 var colCount = 4, /* 多少列 */
 rowCount = 4; /* 多少行 */
 function scene6(){
 $sixBox.fadeIn();
 /* 聚合 */
 $sixDiv.each(function(){
 var _index = $(this).index(),
 col = _index%colCount, /* 第几列 */
 row = Math.floor(_index/rowCount), /* 第几行 */
 cssLeft = sixBoxWidth/2 - colCount/2*sixDivWidth + col*sixDivWidth, /* left的值 */
 cssTop = sixBoxHeight/2 - rowCount/2*sixDivHeight + row*sixDivHeight, /* top的值 */
 divLeft = -col*sixDivWidth, /* 背景定位的宽度 */
 divTop = -row*sixDivHeight; /* 背景定位的高度 */
 $(this).css({"left": cssLeft,"top": cssTop, "background-position": divLeft+"px "+divTop+"px"}); /* 先设置成为聚合,定位好背景图片 */
 setTimeout(scatter,1600); /* 调用散开 */
 })
 setTimeout(scene7,3000); /* 进入第七场景 */
 }
 /* 散开 */
 function scatter(){
 $sixDiv.each(function(){
 var _index = $(this).index(),
 col = _index%colCount, /* 第几列 */
 row = Math.floor(_index/rowCount), /* 第几行 */
 cssLeft = (col-1)*(sixBoxWidth+sixDivWidth)- sixDivWidth, /* 我这里的水平间距大小为盒子大小加上它自身的宽度 */
 cssTop = (row-1)*(sixBoxHeight+sixDivHeight)- sixDivWidth; /* 我这里的水平间距大小为盒子大小加上它自身的宽度 */
 $(this).animate({"left": cssLeft,"top": cssTop},1200);
 })
 }
 /* 场景七 */
 var $sevenDiv = $(".seven-content div"),
 $clickMe = $(".clickMe"),
 /* 送上祝福 */
 $mask = $(".mask"),
 $popBox = $(".pop-box"),
 $write = $("#write"),
 $uSure = $("#uSure"),
 $sevenContent = $(".seven-content");
 function scene7(){
 $sixBox.hide();
 $sevenBox.fadeIn(1000);
 $sevenDiv.each(function(){
 defineSevenDiv($(this));
 })
 function defineSevenDiv($own){
 var _obj = defineRandom();
 $own.css({"transform":"rotate("+_obj.rotate+"deg)"}); /* 设置随机旋转值 */
 $own.animate({left: _obj.left+"px",top: _obj.top+"px"}); /* 随机排布 */
 }
 /* 定义随机left,top和旋转值 */
 function defineRandom(){
 var randomLeft = Math.floor(680*(Math.random())) + 30, /* 图片left值 */
 randomTop = Math.floor(400*Math.random()) + 30, /* 图片top值 */
 randomRotate = 20 - Math.floor(40*Math.random()); /* 图片旋转角度 */
 return {
 left: randomLeft,
 top: randomTop,
 rotate:randomRotate
 }
 }
 /* 拖动祝福卡片 */
 draggableNote();
 /* 拖动图片 */
 function draggableNote(){
 $(".seven-content div").draggable({
 containment: $sevenContent,
 zIndex: 2700,
 start: function(){
 $(this).css({"transform":"rotate(0deg)","cursor": "crosshair"}); /* 开始拖动图片旋转为0,鼠标样式改变 */
 },
 stop: function(){
 var _obj = defineRandom();
 $(this).css({"transform":"rotate("+_obj.rotate+"deg)","cursor": "pointer"}); /* 停止拖动,旋转为随机的 */
 }
 })
 }
 /* 点我送祝福 */
 $clickMe.click(function(){
 $write.val("送上您的祝福吧~");
 $mask.fadeIn();
 $popBox.animate({top: "50%"});
 })
 /* 获取焦点时 */
 $write.focus(function(){
 var _val = $(this).val();
 if(_val == "送上您的祝福吧~"){
 $(this).val("");
 }
 })
 /* 丢失焦点时 */
 $write.blur(function(){
 var _val = $(this).val();
 if(_val.length == 0){
 $(this).val("送上您的祝福吧~");
 }
 })
 /* 点击确定 */
 $uSure.click(function(){
 var _writeVal = $write.val();
 var _randomNum = Math.ceil(Math.random()*6);
 if(_writeVal != "送上您的祝福吧~"){
 var _div = '<div class="note-'+_randomNum+'">'+_writeVal+'</div>';
 $sevenContent.append(_div); /* 如果输入祝福语,将此标签添加的尾部 */
 defineSevenDiv($sevenContent.find("div:last"));
 $popBox.animate({top: "-300px"},function(){
 $mask.fadeOut();
 draggableNote(); /* 可拖动卡片,给新添加的标签赋予拖动功能 */
 });
 }else{
 alert("请输入祝福语!");
 }
 })
 }
})

总结:做完这个小型婚礼,我自己都喜欢自己了,嘿嘿,小小自恋下,希望这个动画也能给大家一个小惊喜。如果大家觉得不错,希望大家能动动小手给我一个小小的赞,促使我不断努力不断去发现,谢谢~ O(∩_∩)O~~

下载:download.csdn.net/download/ya307115947/7497205

链接:cnblogs.com/tattoo/p/3788019.html

回复“资源”,领取 练手源码,视频教程,微服务、并发,数据可调优等,搜索【Java知音】

年一度的中秋节马上就到啦,小伙伴们收到月饼了吗。

记得我的学生时代,邮件祝福还风靡过一段时间,打开QQ邮箱,各种转发邮件和祝福邮件,现在想想都觉得有点久远了。
相信小伙伴们也都用过群发邮件的功能,例如QQ邮箱,163邮箱等都有提供这种功能,直接发送或者密送都可以。但都会存在一个问题,就是一键发送时,邮件内容都是一样的,无法针对收件人而有个性化的称呼。针对这个需求,我们可以做一个群发邮件的桌面端软件。

我们首先整理下我们需要实现的最简单的功能:

  • 可以输入并记住账号和密码
  • 可以导入收件人信息
  • 可以自由选择收件人
  • 邮件内容可以针对收件人进行个性化修改,可以输入邮件标题,可以附带图片
  • 有发送邮件的功能

需求整理完成,说干就干。

布局

首先新建一个窗体,定义为MainForm。将MainForm的初始状态修改为一打开就最大化。

this.WindowState = FormWindowState.Maximized;

我们可以用GroupBox将Mainform划分为三部分,“登录信息”,“收件人信息”,还有“邮件内容”,如图:

Tips:因为我们默认窗口最大化,所以我们需要先设置三个GroupBox的Anchor属性,依次分别为“Top,Bottom,Left”,“Top,Bottom,Left”和“Top,Bottom,Left,Right”。这样GroupBox就会随窗口大小变化而不至于打乱布局。

控件

划分布局之后,在每一个GroupBox中增加我们需要的控件。

“登录信息”

两个Label(标注“账号”与“密码”);

两个TextBox(用来输入账号与密码);

两个CheckBox(一个用来记住账户密码,一个用来隐藏密码)。

用TextBox输入密码时,我们可以设置TextBox的UseSystemPasswordChar属性为True,则我们输入的文字都会以密文显示。与CheckBox联动,默认勾选CheckBox时,密码以符号显示,不勾选CheckBox时,密码以明文显示。

代码如下:

private void cbShowPwd_CheckedChanged(object sender, EventArgs e)
 {
       if (this.cbShowPwd.Checked == true)
            {
                this.tbPassword.UseSystemPasswordChar = false;
                
            }
            else
            {
                this.tbPassword.UseSystemPasswordChar = true;
            }
}

实际效果如图:

记住账户与密码涉及本地存储,我们后面具体写代码时再来实现这个功能,先按住不提。


“收件人信息”

一个CheckBox(全选功能);

一个CheckListBox(用来显示导入的收件人信息);

两个Button(一个用来导入文件,一个用来确认选择收件人);

一个Label(用来显示已选择的收件人数量)。

关于CheckListBox的相关设置与全选功能具体可以查看我的上一篇文章(「Winform开发小技巧05」批量操作单号-CheckListBox)

全选功能代码:

private void cbSelectAll_CheckedChanged(object sender, EventArgs e)
 {
   //全选功能
            if (this.cbSelectAll.Checked)
            {
                for (int i = 0; i < this.clbReceivers.Items.Count; i++)
                {
                    if (!this.clbReceivers.GetItemChecked(i))
                        this.clbReceivers.SetItemChecked(i,true);
                }
            }
            else
            {
                for (int i = 0; i < this.clbReceivers.Items.Count; i++)
                {
                    if (this.clbReceivers.GetItemChecked(i))
                        this.clbReceivers.SetItemChecked(i, false);
                }
            }
}

这里的操作逻辑是:点击Button导入收件人=>CheckListBox显示收件人=>全选=>Label显示已选人数=>点击Button确认选择,收件人数据传输到下一个部分“邮件内容”。

导入功能我们可以写一个方法,这里先暂时不写。

我们可以先解决Label的显示问题。Label显示选择人数时,需要根据CheckListBox中Item的实时勾选状态进行变化,这个比较有趣,我们可以在CheckListBox的Itemcheck事件中实现。

代码如下:

private void clbReceivers_ItemCheck(object sender, ItemCheckEventArgs e)
 {
            //这个事件是指示某项的选中状态将要被更改、在更改前会执行这个事件
            //所以checkedListBox.CheckedItems.Count获取的是更改之前的值           
            if (e.NewValue == CheckState.Checked)
            {

                this.lbSelectedCount.Text = "已选:"+(this.clbReceivers.CheckedItems.Count + 1).ToString();

            }
            else
            {
                this.lbSelectedCount.Text = "已选:" + (this.clbReceivers.CheckedItems.Count - 1).ToString();

            }
}

实际效果如图:(因为还没有数据,为了展示效果,我先手动输入一些数据)

“邮件内容”

两个Label;

两个TextBox(一个用来显示收件人,一个用来输入标题,显示收件人我们可以将其MultiLine属性设置为True,这样可以多行显示);

一个RichTextBox(用来输入正文内容,后期我们用Html来发送文件,RichTextBox方便我们输入段落及图片);

一个Button(用来确认发送邮件)。

效果如图:

至此,我们的布局就全部完成了!

但是大家又没有发现一个问题,由于Winfrom界面缩放问题,我们生成的界面有点模糊,很难看,针对这个问题,微软有专门的解决方案。

首先右键项目=>添加新建项=>添加应用程序清单文件。

打开app.manifest文件,取消application节点注释


打开App.config文件,添加节点EnableWindowsFormsHighDpiAutoResizing,值为true

此时我们重新按F5进行编译,可以发现界面分辨率正常了,瞬间好看不少有没有。

下篇文章,我们就开始正式编码了,或许可以赶上中秋给大家拜个晚年了,哈哈哈


如果各位觉得我写的对你有那么一点点帮助,欢迎一键三连~感激不尽~