iT邦幫忙

1

要怎樣跨視窗匯入資料?

https://ithelp.ithome.com.tw/upload/images/20200824/20129806i8O5RSOwwU.png

小弟我最近在自學visual studio,要怎麼實現匯入功能啊?
還有,目前的食譜是我手動輸入上去的,如果我希望關掉程式再打開,仍然保留食譜,要怎麼做啊?

謝謝各位

(好想吃昇龍餃子)

3
通靈亡
iT邦研究生 2 級 ‧ 2020-08-24 22:26:44
最佳解答

跨視窗傳資料可以參考這篇:
https://dotblogs.com.tw/jeff-yeh/2010/01/04/12799

如果你希望關掉程式再打開,仍然保留食譜
可以用讀寫檔或資料庫讀寫的方式達成

C# 讀寫檔:
https://docs.microsoft.com/zh-tw/troubleshoot/dotnet/csharp/read-write-text-file

C# 資料庫(MariaDB):
可以參考我去年鐵人賽 Day21~Day25
裡面也有你需要的跨視窗用法
https://ithelp.ithome.com.tw/users/20120331/ironman/2817?page=3

3
小魚
iT邦大師 1 級 ‧ 2020-08-25 07:18:14

要學寫程式的話,
資料庫跟SQL語法幾乎可以說是必學的基本功了.
通常都是用資料庫來儲存資料.

3
japhenchen
iT邦大師 1 級 ‧ 2020-08-25 15:37:58

這不是跨表單,別想太多,只是資料存在特定的地方

以下的例子是完全不使用資料庫,也不用NonSQL或ACCESS MDB,唯一動用到的只有newtonsoft的JSon(個人喜好罷了)

using System;
using System.Data;
using System.IO;
using System.Windows.Forms;
using Newtonsoft.Json;

namespace GridViewTest
{
    public partial class FormX : Form
    {
        public FormX()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            dataGridView1.DataSource = 初始化表格();
            讀檔();
        }
        private DataTable 初始化表格()
        {
            // 不動用資料庫的絕地方法
            DataTable ret = new DataTable();
            ret.Columns.Add(new DataColumn("餐名",typeof(string)));
            ret.Columns.Add(new DataColumn("食材一",typeof(string)));
            ret.Columns.Add(new DataColumn("食材二",typeof(string)));
            ret.Columns.Add(new DataColumn("食材三",typeof(string)));
            return ret;
        }
        private void 存檔()
        {
            DataTable dt = (DataTable)dataGridView1.DataSource;
            File.WriteAllText("data.txt",JsonConvert.SerializeObject((DataTable)dataGridView1.DataSource));
        }
        private void 讀檔()
        {
            if (File.Exists("data.txt"))
            {
                var data = File.ReadAllText("data.txt");
                dataGridView1.DataSource = JsonConvert.DeserializeObject<DataTable>(data);
            }
        }

        private void 關閉視窗(object sender, FormClosingEventArgs e)
        {
            存檔();
        }
    }
}

https://ithelp.ithome.com.tw/upload/images/20200825/20117954n0GpnaMZFb.jpg

使用平台: VisualStudio 2019 C#

那個json檔 data.txt 也很簡單......

[{"餐名":"昇龍餃子","食材一":"麵粉","食材二":"豬肉","食材三":"白菜"},{"餐名":"勾心鬥餃","食材一":"麵粉","食材二":"心","食材三":"回鍋肉"},{"餐名":"闇然消魂飯","食材一":"白飯","食材二":"洋葱","食材三":"叉燒肉"}]

所以才會喜好用newtonsoft的json函式庫,DLL也免費,到nuget下載就有

我要發表回答

立即登入回答