//// EVENTS ////

        private void Form1_Load(object sender, EventArgs e)
        {
            SystemSetting.systemDir       = Environment.CurrentDirectory;
            SystemSetting.databaseFileDir = SystemSetting.systemDir + "\\record.db";
            SystemSetting.errorLogDir     = SystemSetting.systemDir + "\\error_log\\";
            SystemSetting.downloadJsonDir = SystemSetting.systemDir + "\\download\\";
            SystemSetting.defaultPage     = SystemSetting.systemDir + "\\default.html";
            SystemSetting.CheckDirectory(SystemSetting.errorLogDir);
            SystemSetting.CheckDirectory(SystemSetting.downloadJsonDir);
            webBrowserInner.Navigate(SystemSetting.defaultPage);
            DatabaseHelper.LoadDatabase();
            LoadShareholderNameList();
        }
        private void QueryQgqpData(double proMin, double proMax)
        {
            var reader = DatabaseHelper.QueryQGQPDataByMainControl(proMin, proMax);

            if (reader.HasRows)
            {
                var commentList = new List <StockCommentList>();
                while (reader.Read())
                {
                    try
                    {
                        var record = new StockCommentList()
                        {
                            Tradecode = reader["TRADECODE"].ToString(),
                            Tradedate = Convert.ToDateTime(reader["TRADEDATE"].ToString()),
                            Stockname = reader["STOCKNAME"].ToString(),
                            Jgcyd     = Convert.ToDouble(reader["JGCYD"].ToString()) * 100,
                            Zljlr     = Convert.ToInt64(reader["ZLJLR"].ToString()),
                        };
                        commentList.Add(record);
                    }
                    catch (Exception ex)
                    {
                        SystemSetting.LogAndDisplayError(ex, "MainForm.cs, line 114");
                    }
                }
                if (commentList.Count > 0)
                {
                    var ui = new Views.UI_QgqpData(proMin * 100, proMax * 100, commentList.Count);
                    ui.FillData(commentList);
                    int heightIntend = (commentList.Count + 2) * 23 + 38;
                    ui.Height = heightIntend < ui.minimumHeight ? ui.minimumHeight : heightIntend;
                    ui.Dock   = DockStyle.Top;
                    this.panel_main.Controls.Add(ui);
                }
            }
            else
            {
                MessageBox.Show("未找到记录值!");
            }
        }
 private void LoadShareholderNameList()
 {
     try
     {
         SQLiteDataReader reader = DatabaseHelper.GetShareholderNameList();
         SystemSetting.lstTopTenShareholder        = new List <string>();
         SystemSetting.lstTopTenShareholderDisplay = new BindingList <string>();
         listBox_shareholders.Items.Clear();
         while (reader.Read())
         {
             try
             {
                 SystemSetting.lstTopTenShareholder.Add(reader[0].ToString());
                 // SystemSetting.lstTopTenShareholderDisplay.Add(reader[0].ToString());
             }
             catch (Exception ex)
             {
                 SystemSetting.LogAndDisplayError(ex, "MainForm.cs, line 142");
             }
         }
         if (SystemSetting.lstTopTenShareholder.Count > 0)
         {
             listBox_shareholders.SuspendLayout();
             SystemSetting.lstTopTenShareholderDisplay = new BindingList <string>(SystemSetting.lstTopTenShareholder.Take(SystemSetting.recordCountPerPage).ToList());
             listBox_shareholders.DataSource           = SystemSetting.lstTopTenShareholderDisplay;
             label_shareholderList.Text = $"股东列表({SystemSetting.lstTopTenShareholder.Count})";
             var totalPageCount = (int)Math.Ceiling(SystemSetting.lstTopTenShareholder.Count * 1.0 / SystemSetting.recordCountPerPage);
             var dataIndexArray = Enumerable.Range(1, totalPageCount).ToArray();
             comboBox_paging.Items.Clear();
             comboBox_paging.Items.AddRange(dataIndexArray.Cast <object>().ToArray());
             comboBox_paging.SelectedIndex = 0;
             listBox_shareholders.ResumeLayout();
             listBox_shareholders.Invalidate();
         }
     }
     catch (Exception ex)
     {
         SystemSetting.LogAndDisplayError(ex, "MainForm.cs, line 138");
     }
 }
        //// FUNCTIONS ////

        private void QueryAndDisplayTopTenShareholder(string name)
        {
            try
            {
                SQLiteDataReader reader = DatabaseHelper.QueryByShareholderName(name);
                if (reader.HasRows)
                {
                    TopTenShareholder topTenShareholder = new TopTenShareholder(name);
                    while (reader.Read())
                    {
                        try
                        {
                            ShareHoldingRecord record = new ShareHoldingRecord()
                            {
                                dateOfRecord    = DatabaseHelper.ColumnExists(reader, "dateOfRecord") ? reader["dateOfRecord"].ToString() : "",
                                ranking         = DatabaseHelper.ColumnExists(reader, "ranking") ? reader["ranking"].ToString() : "",
                                stockCode       = DatabaseHelper.ColumnExists(reader, "stockCode") ? reader["stockCode"].ToString() : "",
                                stockName       = DatabaseHelper.ColumnExists(reader, "stockName") ? reader["stockName"].ToString() : "",
                                shareholderType = DatabaseHelper.ColumnExists(reader, "shareholderType") ? reader["shareholderType"].ToString() : "",
                                shareType       = DatabaseHelper.ColumnExists(reader, "shareType") ? reader["shareType"].ToString() : "",
                                numberOfShares  = DatabaseHelper.ColumnExists(reader, "numberOfShares") ? reader["numberOfShares"].ToString() : "",
                                percentageOfTotalTradableShares = DatabaseHelper.ColumnExists(reader, "percentageOfTotalTradableShares") ? reader["percentageOfTotalTradableShares"].ToString() : "",
                                statusChange    = DatabaseHelper.ColumnExists(reader, "statusChange") ? reader["statusChange"].ToString() : "",
                                changeRate      = DatabaseHelper.ColumnExists(reader, "changeRate") ? reader["changeRate"].ToString() : "",
                                financialReport = new FinancialReport()
                                {
                                    stockCode                               = DatabaseHelper.ColumnExists(reader, "stockCode") ? reader["stockCode"].ToString() : "",
                                    dateOfRecord                            = DatabaseHelper.ColumnExists(reader, "dateOfRecord") ? reader["dateOfRecord"].ToString() : "",
                                    basicProfitPerShare                     = DatabaseHelper.ColumnExists(reader, "basicProfitPerShare") ? reader["basicProfitPerShare"].ToString() : "",
                                    netAssetsPerShare                       = DatabaseHelper.ColumnExists(reader, "netAssetsPerShare") ? reader["netAssetsPerShare"].ToString() : "",
                                    providentFundPerShare                   = DatabaseHelper.ColumnExists(reader, "providentFundPerShare") ? reader["providentFundPerShare"].ToString() : "",
                                    undistributedProfitPerShare             = DatabaseHelper.ColumnExists(reader, "undistributedProfitPerShare") ? reader["undistributedProfitPerShare"].ToString() : "",
                                    cashFlowPerShare                        = DatabaseHelper.ColumnExists(reader, "cashFlowPerShare") ? reader["cashFlowPerShare"].ToString() : "",
                                    totalOperatingIncome                    = DatabaseHelper.ColumnExists(reader, "totalOperatingIncome") ? reader["totalOperatingIncome"].ToString() : "",
                                    grossProfit                             = DatabaseHelper.ColumnExists(reader, "grossProfit") ? reader["grossProfit"].ToString() : "",
                                    netProfitAttributable                   = DatabaseHelper.ColumnExists(reader, "netProfitAttributable") ? reader["netProfitAttributable"].ToString() : "",
                                    deductionOfNonNetProfit                 = DatabaseHelper.ColumnExists(reader, "deductionOfNonNetProfit") ? reader["deductionOfNonNetProfit"].ToString() : "",
                                    totalOperatingIncomeYearOnYearGrowth    = DatabaseHelper.ColumnExists(reader, "totalOperatingIncomeYearOnYearGrowth") ? reader["totalOperatingIncomeYearOnYearGrowth"].ToString() : "",
                                    netProfitAttributableYearOnYearGrowth   = DatabaseHelper.ColumnExists(reader, "netProfitAttributableYearOnYearGrowth") ? reader["netProfitAttributableYearOnYearGrowth"].ToString() : "",
                                    deductionOfNonNetProfitYearOnYearGrowth = DatabaseHelper.ColumnExists(reader, "deductionOfNonNetProfitYearOnYearGrowth") ? reader["deductionOfNonNetProfitYearOnYearGrowth"].ToString() : "",
                                    totalOperatingIncomeRingGrowth          = DatabaseHelper.ColumnExists(reader, "totalOperatingIncomeRingGrowth") ? reader["totalOperatingIncomeRingGrowth"].ToString() : "",
                                    netProfitAttributableRingGrowth         = DatabaseHelper.ColumnExists(reader, "netProfitAttributableRingGrowth") ? reader["netProfitAttributableRingGrowth"].ToString() : "",
                                    deductionOfNonNetProfitRingGrowth       = DatabaseHelper.ColumnExists(reader, "deductionOfNonNetProfitRingGrowth") ? reader["deductionOfNonNetProfitRingGrowth"].ToString() : "",
                                    dilutedReturnOnEquity                   = DatabaseHelper.ColumnExists(reader, "dilutedReturnOnEquity") ? reader["dilutedReturnOnEquity"].ToString() : "",
                                    dilutedReturnOnTotalAssets              = DatabaseHelper.ColumnExists(reader, "dilutedReturnOnTotalAssets") ? reader["dilutedReturnOnTotalAssets"].ToString() : "",
                                    grossMargin                             = DatabaseHelper.ColumnExists(reader, "grossMargin") ? reader["grossMargin"].ToString() : "",
                                    netProfitRate                           = DatabaseHelper.ColumnExists(reader, "netProfitRate") ? reader["netProfitRate"].ToString() : ""
                                }
                            };
                            topTenShareholder.lstShareHoldingRecord.Add(record);
                        }
                        catch (Exception ex)
                        {
                            SystemSetting.LogAndDisplayError(ex, "MainForm.cs, line 114");
                        }
                    }
                    if (topTenShareholder.lstShareHoldingRecord.Count > 0)
                    {
                        Views.UI_TopTenShareholder ui = new Views.UI_TopTenShareholder();
                        ui.PopulateDataInTable(topTenShareholder);
                        int heightIntend = (topTenShareholder.lstShareHoldingRecord.Count + 2) * 23 + 38;
                        ui.Height = heightIntend < ui.minimumHeight ? ui.minimumHeight : heightIntend;

                        ui.Dock = DockStyle.Top;
                        this.panel_main.Controls.Add(ui);
                    }
                }
                else
                {
                    MessageBox.Show("未找到记录值!");
                }
            }
            catch (Exception ex1)
            {
                SystemSetting.LogAndDisplayError(ex1, "MainForm.cs, line 124");
            }
        }