using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.IO;

namespace winformDemo
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            //让textBox2隐藏
            this.textBox2.Visible = false;
            //让dataGridView1表中的最后一行空值隐藏掉
            this.dataGridView1.AllowUserToAddRows = false;
        }
        SqlConnection con = new SqlConnection();
        SqlCommand com = new SqlCommand();
        OpenFileDialog open = new OpenFileDialog();
        /// <summary>
        /// 行
        /// </summary>
        string ClickRow = "";
        /// <summary>
        /// 列
        /// </summary>
        string ClickCells = "";
        /// <summary>
        /// 行和列相加的字符串
        /// </summary>

string SqlLanding = "server=.;uid=sa;pwd=123456789;database=myfirstDemo";
        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            //获取正在点击的行和列。
            ClickRow = this.dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString();
            ClickCells = this.dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString();
        }

private void Form1_Load(object sender, EventArgs e)
        {
            SelectInfo();
        }
        public void SelectInfo()
        {
            //断开式链接查看数据库数据
            con.ConnectionString = SqlLanding;
            com.CommandText = "select Name as 文件名,TxtLuJing as 文件路径 from TxtBianJiQi";
            com.Connection = con;
            DataSet ds = new DataSet();
            SqlDataAdapter sda = new SqlDataAdapter(com);
            sda.Fill(ds);
            this.dataGridView1.DataSource = ds.Tables[0];
        }
        private void 打开ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            string Filepath = ClickCells + ClickRow;
            this.textBox2.Visible = true;
            try
            {
                //只读流;
                FileStream fss = new FileStream(Filepath, FileMode.OpenOrCreate, FileAccess.Read);
                StreamReader sww = new StreamReader(fss, Encoding.Default);
                textBox2.Text = sww.ReadToEnd();
                sww.Close();
                fss.Close();
            }
            catch (Exception ex)
            {
                //如果没有选择路径提示出一句话;
                MessageBox.Show("查看路径错误:" + ex.Message);
            }
        }

private void 保存ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            string Filepath = ClickCells + ClickRow;
            try
            {
                //只写流;
                FileStream fss = new FileStream(Filepath, FileMode.Create, FileAccess.Write);
                StreamWriter sww = new StreamWriter(fss, Encoding.Default);
                sww.Write(textBox2.Text);
                sww.Close();
                fss.Close();
                MessageBox.Show("保存成功!");
            }
            catch (Exception ex)
            {
                //如果没有选择路径提示出一句话;
                MessageBox.Show("保存路径错误:" + ex.Message);
            }
            this.textBox2.Visible = false;
        }

private void 新建ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.textBox2.Text = "";
            string localFilePath = "";
            string fileNameExt = "";
            string flie = "";
            SaveFileDialog saveFileDialog = new SaveFileDialog();
            //打开默认的文件目录
            saveFileDialog.InitialDirectory = "D:\\\\Text\\";
            //文件后缀名
            saveFileDialog.Filter = "文本文件(*.txt)|*.txt|所有文件(*.*)|*.*";
            saveFileDialog.FilterIndex = 2;
            string LuJing = saveFileDialog.InitialDirectory;
            if (saveFileDialog.ShowDialog() == DialogResult.OK)
            {
                flie = saveFileDialog.FileName;
                //文件目录名
                localFilePath = saveFileDialog.FileName.ToString();
                //截取文件名字
                fileNameExt = localFilePath.Substring(localFilePath.LastIndexOf("\\") + 1);
            }
            string sql = "select name from TxtBianJiQi";
            SqlCommand co = new SqlCommand(sql, con);
            SqlDataAdapter da = new SqlDataAdapter(co);
            DataSet dss = new DataSet();
            da.Fill(dss);
            //循环判断传入的表中name
            for (int i = 0; i < dss.Tables[0].Rows.Count; i++)
            {
                //定一个变量去接获取出来name
                string ss = dss.Tables[0].Rows[i][0].ToString();
                //判断对话框里输入的值是否与查出来的name相同
                if (fileNameExt == ss)
                {
                    MessageBox.Show("文件已更改!");
                    return;
                }
            }
            try
            {
                //只写流
                FileStream fs = new FileStream(flie, FileMode.Create, FileAccess.Write);
                StreamWriter sw = new StreamWriter(fs, Encoding.Default);//对话框另存为。
                sw.Write(textBox2.Text);
                sw.Flush();
                fs.Close();
                con.ConnectionString = SqlLanding;
                //往数据库添加 文件名和路径名 sql语句
                com.CommandText = String.Format("insert into TxtBianJiQi(Name,TxtLuJing)values('{0}','{1}')", fileNameExt, LuJing);
                com.Connection = con;
                con.Open();
                int insertInto = Convert.ToInt32(com.ExecuteScalar());
                if (insertInto > 0)
                {
                    MessageBox.Show("操作失败!请重试。");
                }
                else
                {
                    MessageBox.Show("添加成功!");
                    this.textBox2.Visible = false;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("添加日志失败:" + ex.Message);
            }
            con.Close();
            SelectInfo();
        }

private void 删除ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            con.ConnectionString = SqlLanding;
            //从数据库删除正在点击的文件名
            com.CommandText = String.Format("delete from TxtBianJiQi where Name='{0}'", ClickRow);
            com.Connection = con;
            con.Open();
            DialogResult dr = MessageBox.Show("确认删除?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
            if (dr == DialogResult.OK)
            {
                int insertInto = Convert.ToInt32(com.ExecuteScalar());
                if (insertInto > 0)
                {
                    MessageBox.Show("操作失误!!");
                }
                else
                {
                    //File.Delete(ClickCells + ClickRow);删除Windows里的文件,括号里是要删除文档的路径。
                    File.Delete(ClickCells + ClickRow);
                    MessageBox.Show("删除成功!");
                }
            }
            con.Close();
            SelectInfo();
        }

private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Close();
        }

}
}
就是写了一个挺简单的在winform里进行填写文本,里面用到的ADO.NET来链接数据库,在新建文本的时候需要写入.txt后缀名,打开或者是删除的时候需要先点击一下文本名。 写的不足请见谅!

简单的winform编辑器的更多相关文章

  1. SimpleMarkdown - 一款简单的Markdown编辑器

    源码地址: https://github.com/zhuangZhou/SimpleMarkdown 预览地址: http://hawkzz.com:8000 作者网站:http://hawkzz.c ...

  2. python使用wxPython创建一个简单的文本编辑器。

    ubuntu下通过'sudo apt-get install python-wxtools'下载wxPython.load和save函数用于加载和保存文件内容,button通过Bind函数绑定这两个函 ...

  3. 原生JS实现简单富文本编辑器2

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. 原生JS实现简单富文本编辑器

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. [原创]用python写了一个简单的markdown编辑器

    以前我常用openoffice记录东西,最喜欢它的当然是在linux上能用了,还有里面的公式输入,前几天才了解markdown这个东东,初步了解发现它正是我需要的东西,可以用它随心所欲地记录些东西,而 ...

  6. 学习vi和vim编辑(3):一个简单的文本编辑器(2)

    然后文章,继续评论vi编辑简单的文本编辑命令. 本文主要是删除的文字.复制,运动命令. 删除文本: 正如上一篇文章中讲过的,对于删除命令("d")也具有"(command ...

  7. Tkinter制作简单的python编辑器

    想要制作简单的python脚本编辑器,其中文字输入代码部分使用Tkinter中的Text控件即可实现. 但是问题是,如何实现高亮呢?参考python自带的编辑器:python27/vidle文件夹中的 ...

  8. C语言实例解析精粹学习笔记——39(简单的文本编辑器)

    实例说明: 编辑一个简单的单行文本编辑器,编辑命令有以下几种:(E.Q.R.I.D) 只有自己在完全空白的情况下编写出来的程序,才是真正自己会的程序,现在所做的,不过是程序的搬运工,把书上的程序搬到网 ...

  9. 基于JQuery的简单富文本编辑器

    利用jQuery实现最简单的编辑器 我试了很多种方法,目前最快捷能够实现及其简单的编辑可以使用 document.execCommand("ForeColor", "fa ...

随机推荐

  1. 【Oracle 12c】最新CUUG OCP-071考试题库(54题)

    54.(12-15) choose the best answer: View the Exhibit and examine the structure of the ORDER_ITEMS and ...

  2. “全栈2019”Java多线程第一章:认识多线程

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  3. Jzoj 初中2249 蒸发学水(并查集)

    题目描述 众所周知,TerryHu 是一位大佬,他平时最喜欢做的事就是蒸发学水. 机房的位置一共有n 行m 列,一开始每个位置都有一滴学水,TerryHu 决定在每一个时刻选择 一滴学水进行蒸发,直到 ...

  4. css 实现关闭按钮 X

    .close::before { content: "\2716";} 然后就显示出来了 这里有个更直接的例子 <!DOCTYPE html> <html lan ...

  5. 知名协作工具 Slack 换新 logo 啦!

    简评:本文系译文.Slack 在自家 Blog 上解释了新的设计 -- 旧版的 logo 有 11 种颜色,在非白色背景的情况下,logo 不仅难看,而且很容易在多个地方上表现不一致. 新年换新装,S ...

  6. C语言多线程编程一

    1. Windows下同时打开多个对话框: #include <Windows.h> #include <process.h> //创建线程 void runmsg(void ...

  7. myeclipse控制台打印文字

    先来看看效果图: 下面是代码: import java.awt.Font; import java.awt.Shape; import java.awt.font.FontRenderContext; ...

  8. Laravel 的核心概念

    工欲善其事,必先利其器.在开发Xblog的过程中,稍微领悟了一点Laravel的思想.确实如此,这篇文章读完你可能并不能从无到有写出一个博客,但知道Laravel的核心概念之后,当你再次写起Larav ...

  9. 通过设置Ionic-Cli代理解决ionic serve跨域调试问题

    Ionic-Cli代理设置: 打开ionic.config.json文件,添加proxies代理配置字段: { "name": "ion", "app ...

  10. Solr7.4的学习与使用

    学习的原因: 17年的时候有学习使用过lucene和solr,但是后来也遗忘了,最近公司有个项目需要使用到全文检索,正好也顺便跟着学习一下,使用的版本是Solr7.4的,下载地址:http://arc ...