中秋节马上就要到了。你收到月饼了吗?当我还是学生的时候,我记得有一段时间电子邮件祝福还很流行,所以当我打开QQ邮箱时,我收到了各种转发和祝福的电子邮件。现在想起来,似乎有点老了。相信您的朋友也使用过群发邮件功能。比如QQ邮箱、163邮箱等都有这个功能,可以直接发送,也可以抄送。但一键发送时,始终存在邮件内容不变、无法自定义收件人的问题。针对这种需求,可以创建桌面软件来发送批量电子邮件。首先我们来梳理一下需要实现的最简单的功能。
您可以输入并记住您的帐户和密码。 您可以自由选择收件人。 您可以输入电子邮件标题并附上照片。请这样做。
布局首先创建一个定义为MainForm 的新表单。更改MainForm 的初始状态,使其一打开就最大化。
this.WindowState=FormWindowState.Maximized; 如图所示,您可以使用GroupBox将主窗体分为三个部分:“登录信息”、“收件人信息”和“电子邮件内容”。
芯片
:默认窗口是最大化的,所以首先设置三个组框(Top、Bottom、Left、Top、Bottom、Left、Top、Bottom、Left、Right)的anchor属性。这样,GroupBox 会根据窗口大小而变化,而不会破坏布局。
分离并排列控件后,将所需的控件添加到每个组框中。登录信息:两个标签(标有“帐户”和“密码”),两个文本框(用于输入帐号和密码),两个复选框(一个标有“帐户”(一个用于记住密码,一个用于隐藏密码)。如果使用文本框输入密码,则将文本框的UseSystemPasswordChar 属性设置为True 会以加密文本形式显示您键入的文本。它与复选框链接,默认情况下,如果选中复选框,则将密码显示为符号;如果未选中复选框,则以纯文本形式显示密码。代码将如下所示:
private void cbShowPwd_CheckedChanged(object sender, EventArgs e) {if (this.cbShowPwd.Checked==true) { this.tbPassword.UseSystemPasswordChar=false;} else { this.tbPassword.UseSystemPasswordChar=true }}实际效果是:是。
记住帐户和密码涉及本地存储。这个功能我们后面写代码的时候会实现,这里就不再描述了。
收件人信息:1个复选框(选择所有功能)、1个复选框(用于显示导入的收件人信息)、2个按钮(1个用于导入文件,1个用于确认收件人选择)。所选收件人的数量)。更多关于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)这里的操作逻辑是: 点击按钮导入收件人=在CheckListBox中显示收件人=全选=在标签中显示选中的号码=点击按钮确认选择接收个人数据将被转移到下一个“消息内容”部分。也可以写一个方法来导入函数,不过这里暂时不写了,首先解决标签的显示问题,如果要显示签到的人数,需要根据情况更改标签。到CheckListBox中的items的实时检查状态就更有趣了,代码可以在CheckListBox的Itemscheck事件中实现,会出现这样的情况:
private void clbReceivers_ItemCheck(object sender, ItemsCheckEventArgs 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(); }}实际效果如图(还没有数据,所以我先手动输入来展示效果)。一些数据)
邮件内容:2个标签,2个文本框(一个显示收件人,一个输入标题。要显示收件人,请将MultiLine属性设置为True,这样可以显示多行)。输入您的文本内容。稍后使用Html 发送文件。 RichTextBox允许您轻松输入段落和图像(用于确认电子邮件发送)。效果如下图所示。
至此,布局就完成了。但没有人发现任何问题。由于Winfrom界面的缩放问题,我们生成的界面有点模糊,我们有一个特殊的解决方案来解决这个问题。首先,右键单击您的项目=添加新项目=添加应用程序清单文件。
打开app.manifest 文件并取消注释应用程序节点。
打开App.config 文件并添加值为true 的EnableWindowsFormsHighDpiAutoResizing 节点。
此时,再次按F5进行编译,您会发现界面分辨率现在正常,并且看起来立即更好。在下一篇文章中,我们将开始正式编码。或许可以在中秋节之际祝大家退休生活愉快。
如果您觉得我写的内容有任何帮助,请随时单击这三个链接。
本文和图片来自网络,不代表火豚游戏立场,如若侵权请联系我们删除:https://www.huotun.com/game/643350.html