コード例 #1
0
        /// <summary>
        /// 计算结果返回事件
        /// </summary>
        /// <param name="status">状态</param>
        /// <param name="message">信息</param>
        /// <param name="percent">百分比</param>
        /// <param name="value">具体数据数组</param>
        private void ResCalcReturn_Event(EnumResCalcStatus status, string message, double percent, double[] value)
        {
            if (status == EnumResCalcStatus.Done)
            {
                this.Invoke(new EventHandler(delegate
                {
                    int len    = value.Length;
                    string log = string.Format("{0}个电阻并联最佳方案:{1}", len, ResValueFormat(value[0]));
                    for (int i = 1; i < len; i++)
                    {
                        log += @" // " + ResValueFormat(value[i]);
                    }
                    log += string.Format(" = {0:#.###}", ResValueFormat(ResCalc.CalcParallel(value)));
                    txtOutput.AppendText(log + "\r\n");
                    if (percent >= 100)
                    {
                        txtOutput.AppendText(message);
                    }
                }));
            }
            else if (status == EnumResCalcStatus.Error)
            {
                this.Invoke(new EventHandler(delegate
                {
                    txtOutput.AppendText(message);
                }));
            }

            this.Invoke(new EventHandler(delegate
            {
                progressBarResCalc.Value = Convert.ToInt32(percent) % (progressBarResCalc.Maximum + 1);
            }));
        }
コード例 #2
0
        /// <summary>
        /// 计算按钮
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnCalc_Click(object sender, EventArgs e)
        {
            double resValue = GetSiteResValue(txtResValue, comboBoxResUnit);

            if (resValue > 0)
            {
                txtOutput.Clear();
                GetResSelectList(listViewRes, ResListData, resValue);
                ResCalc resCalc = new ResCalc(ResListData.ToArray(), resValue, Convert.ToInt32(numResCount.Value));
                resCalc.EventResCalcReturn += new ResCalc.DelegateResCalcReturn(ResCalcReturn_Event);
                resCalc.Start();
            }
            else
            {
                MessageBox.Show("输入的阻值有误,请重新输入!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                txtResValue.Focus();
            }
        }