WinForm+C#小案例--->写一个记事本程序

需求如下:

  1. 文件菜单中有两个下拉列表:保存、打开
  2. 格式菜单中有一个下拉列表:自动换行点击自动换行---->下拉列表中选项变成取消自动换行,点击取消自动换行变成自动换行,同时附带换行和不换行对应的效果
  3. 样式菜单中有两个下拉列表:字体、颜色,点击字体修改下方输入框中的字体样式,点击颜色修改下方输入框中颜色样式。

效果预览:

创建 Winform 项目并设计界面
编写代码实现切换逻辑
cs 复制代码
using System;
using System.IO;
using System.Text;
using System.Windows.Forms;

namespace 文本
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void 打开ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog()
            {
                Title = "打开文件",
                Filter = "文本文件(*.txt)|*.txt|所有文件(*.*)|*.*",
                InitialDirectory = "C:\\Users\\Administrator\\Desktop"
            };
            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                string directory = openFileDialog.FileName;// 目录
                string fileName = openFileDialog.SafeFileName;// 文件
                try
                {
                    using (StreamReader sr = new StreamReader(directory, Encoding.UTF8))
                    {
                        textBox1.Clear();
                        textBox1.Text = sr.ReadToEnd();
                    }
                }
                catch (Exception)
                {
                    MessageBox.Show("打开文件失败");
                }
            }
        }

        private void 保存ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            SaveFileDialog saveFileDialog = new SaveFileDialog()
            {
                Title = "保存文件",
                Filter = "文本文件(*.txt)|*.txt|所有文件(*.*)|*.*",
                InitialDirectory = "E:/桌面",
                DefaultExt = ".txt",
                OverwritePrompt = true,
            };
            if (saveFileDialog.ShowDialog() == DialogResult.OK)
            {
                try
                {
                    string filePath = saveFileDialog.FileName;
                    File.WriteAllText(filePath, textBox1.Text);
                    textBox1.Clear();// 清空输入框中的信息
                    MessageBox.Show("文件保存成功!");
                }
                catch (Exception)
                {
                    MessageBox.Show("保存文件失败");
                }
            }
        }

        private void 自动换行ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            textBox1.WordWrap = true;
            MessageBox.Show("开启自动换行");
        }

        private void 取消ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            textBox1.WordWrap = false;
            MessageBox.Show("关闭自动换行");
        }

        private void 字体ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FontDialog fontDialog = new FontDialog();
            if (fontDialog.ShowDialog() == DialogResult.OK)
            {
                textBox1.Font = fontDialog.Font;
                MessageBox.Show("字体样式设置成功!");
            }
            else
            {
                MessageBox.Show("取消设置字体样式");
            }
        }

        private void 颜色ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ColorDialog colorDialog = new ColorDialog();
            if (colorDialog.ShowDialog() == DialogResult.OK)
            {
                textBox1.ForeColor = colorDialog.Color;
            }
            else
            {
                MessageBox.Show("取消颜色设置");
            }
        }
    }
}
效果演示
相关推荐
txinyu的博客9 分钟前
解析业务层的key冲突问题
开发语言·c++·分布式
码不停蹄Zzz14 分钟前
C语言第1章
c语言·开发语言
行者961 小时前
Flutter跨平台开发在OpenHarmony上的评分组件实现与优化
开发语言·flutter·harmonyos·鸿蒙
阿蒙Amon1 小时前
C#每日面试题-Array和ArrayList的区别
java·开发语言·c#
SmartRadio1 小时前
ESP32添加修改蓝牙名称和获取蓝牙连接状态的AT命令-完整UART BLE服务功能后的完整`main.c`代码
c语言·开发语言·c++·esp32·ble
且去填词1 小时前
Go 语言的“反叛”——为什么少即是多?
开发语言·后端·面试·go
知乎的哥廷根数学学派2 小时前
基于生成对抗U-Net混合架构的隧道衬砌缺陷地质雷达数据智能反演与成像方法(以模拟信号为例,Pytorch)
开发语言·人工智能·pytorch·python·深度学习·机器学习
yeziyfx2 小时前
kotlin中 ?:的用法
android·开发语言·kotlin
charlie1145141913 小时前
嵌入式的现代C++教程——constexpr与设计技巧
开发语言·c++·笔记·单片机·学习·算法·嵌入式
古城小栈3 小时前
Rust 网络请求库:reqwest
开发语言·网络·rust