C# winForm及控制台编写阳历日历,详细教程

\\注意 winform窗口添加

\\RichTextBox作为控制台显示控件

\\GridContral控件需要DevExpress插件,可以用DataGridView代替

\\button控件

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 Calendar_Demo
{
    public partial class Form1 : Form
    {


        public Form1()
        {
            InitializeComponent();
        }


       private void Form1_Load(object sender, EventArgs e)
        {
            //初始化
            int newYear = 1900;
            int newMonth = 1;


            for(int i=0;i<10;i++){
                comboBox1.Items.Add(newYear);
                newYear += 1;
            }
            comboBox1.SelectedIndex = 0;
            for (int i = 0; i < 12; i++)
            {
                comboBox2.Items.Add(newMonth);
                newMonth += 1;
            }
            comboBox2.SelectedIndex = 0;


            
        }
       //将List日历放入DataTable中
       DataTable Calendar(List<string> list)
        {
            //新建DataTable及列
            DataTable dt = new DataTable("日历");
            dt.Columns.Add("日", typeof(string));
            dt.Columns.Add("一", typeof(string));
            dt.Columns.Add("二", typeof(string));
            dt.Columns.Add("三", typeof(string));
            dt.Columns.Add("四", typeof(string));
            dt.Columns.Add("五", typeof(string));
            dt.Columns.Add("六", typeof(string));
          
            for(int i = 0; i < 6; i++)
            {
                dt.Rows.Add();//增加新行
            }
            for (int i = 0; i < list.Count; i++)
            {
                int consult = i / 7;//行数
                int remainder = i % 7;//该行第几列
                dt.Rows[consult][remainder] = list[i];//给DataTable每行每列价值
            }
            return dt;
        }
       //输入年月,获取该list日历
       List<string> CalendarList(string year,string months) 
        {
            List<string> list = new List<string>();
            int countDay = 0;//总天数
            int month = 0;//所选这个月的天数
            int nullNum = 0;
            int inputYear = int.Parse(year);
            int inputMonth = int.Parse(months);


            //统计从1900到输入的年份的天数
            for (int i = 1900; i < inputYear; i++)
            {
                if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0)//判断是否为瑞年
                {
                    countDay += 366;
                }
                else
                {
                    countDay += 365;
                }
            }
            for (int i = 1; i < inputMonth; i++)
            {


                if (i == 2)
                    if (inputYear % 4 == 0 && inputYear % 100 != 0 || inputYear % 400 == 0)
                        countDay += 29;
                    else
                        countDay += 28;
                else
                {
                    if (i > 7 && i % 2 == 0 || i < 7 && i % 2 != 0)
                        countDay += 31;
                    else
                        countDay += 30;
                }
            }
            if (inputMonth == 2)
                if (inputYear % 4 == 0 && inputYear % 100 != 0 || inputYear % 400 == 0)
                    month = 29;
                else
                    month = 28;
            else
            {
                if (inputMonth > 7 && inputMonth % 2 == 0 || inputMonth < 7 && inputMonth % 2 != 0)
                    month = 31;
                else
                    month = 30;
            }
            nullNum = countDay % 7 + 1;//占位为空
            for (int i = 0; i < nullNum; i++)
            {
                list.Add("");
            }
            for (int i = 1; i <= month; i++)
            {
                list.Add(i.ToString());
            }
            return list;
        }
       //让日历显示到RichTextBox中
       void Calendar(RichTextBox box, List<string> list)
        {
            richTextBox1.Clear();
                box.AppendText("******************************************************\r\n");
                box.AppendText("日\t一\t二\t三\t四\t五\t六");
                for (int i = 0; i < list.Count; i++)
                {
                    if (i % 7 == 0)
                        box.AppendText("\r\n");
                    box.AppendText(list[i] + "\t");
                }
                box.AppendText("\r\n");
                box.AppendText("******************************************************\r\n");
            
        }
       //查看button
       private void button1_Click(object sender, EventArgs e)
        {
            List<string> list = CalendarList(comboBox1.Text, comboBox2.Text);
            Calendar(richTextBox1, list);
            DataTable dt = Calendar(list);
            gridControl1.DataSource = dt;//没有DevExpress插件,可以用DataGridView
        }
   
    }
}

猜你喜欢

转载自blog.csdn.net/qq_38695646/article/details/80706913
今日推荐