⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frmcommontask.cs

📁 三国群英传7场景修改器 源代码
💻 CS
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace San7GeneralScreen
{
    public partial class FrmCommonTask : Form
    {
        private DataGridView _MainDataGridView = null;

        public FrmCommonTask(DataGridView dgv)
        {
            InitializeComponent();
            _MainDataGridView = dgv;
        }

        private void btnCancel_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void FrmCommonTask_Load(object sender, EventArgs e)
        {
            foreach (DataGridViewColumn dgvc in _MainDataGridView.Columns)
            {
                cmbColumns.Items.Add(dgvc.Name);
            }
            txtModifyMax.Text = _MainDataGridView.Rows.Count.ToString();
        }

        public int ModifyType
        {
            get
            {
                if (rbAll.Checked)
                {
                    return 0;
                }
                if (rbNull.Checked)
                {
                    return 1;
                }
                if (rbNotNull.Checked)
                {
                    return 2;
                }
                return 0;
            }
        }

        private void btnOK_Click(object sender, EventArgs e)
        {
            Random rand = new Random();           
            int minValue = (int)Microsoft.VisualBasic.Conversion.Val(txtMinValue.Text);
            int maxValue = (int)Microsoft.VisualBasic.Conversion.Val(txtMaxValue.Text);
            int range = maxValue - minValue;
            int minModify = (int)Microsoft.VisualBasic.Conversion.Val(txtModifyMin.Text);
            int maxModify = (int)Microsoft.VisualBasic.Conversion.Val(txtModifyMax.Text);
            int i = 0;
            switch (cmbUpdateMethod.Text)
            {
                case "=":
                    for (i = minModify; i < maxModify; i++)
                    {
                        DataGridViewRow dgvr = _MainDataGridView.Rows[i];
                        if (CheckCondition(dgvr))
                        {
                            dgvr.Cells[cmbColumns.Text].Value = txtValue.Text;
                        }
                    }
                    break;
                case "*":
                    for(i=minModify;i<maxModify;i++)
                    {
                        DataGridViewRow dgvr = _MainDataGridView.Rows[i];
                        if (CheckCondition(dgvr))
                        {
                            dgvr.Cells[cmbColumns.Text].Value = FindNumberFromString(rtNull(dgvr.Cells[cmbColumns.Text].Value)) * int.Parse(txtValue.Text);
                        }
                    }
                    break;
                case "+":
                    for (i = minModify; i < maxModify; i++)
                    {
                        DataGridViewRow dgvr = _MainDataGridView.Rows[i];
                        if (CheckCondition(dgvr))
                        {
                            dgvr.Cells[cmbColumns.Text].Value = FindNumberFromString(rtNull(dgvr.Cells[cmbColumns.Text].Value)) + int.Parse(txtValue.Text);
                        }
                    }
                    break;
                case "Rand+":
                    for (i = minModify; i < maxModify; i++)
                    {
                        DataGridViewRow dgvr = _MainDataGridView.Rows[i];
                        if (CheckCondition(dgvr))
                        {
                            dgvr.Cells[cmbColumns.Text].Value = FindNumberFromString(rtNull(dgvr.Cells[cmbColumns.Text].Value)) +minValue + rand.Next(range + 1);
                        }
                    }     
                    break;
                case "RandRange":
                    for (i = minModify; i < maxModify; i++)
                    {
                        DataGridViewRow dgvr = _MainDataGridView.Rows[i];
                        if (CheckCondition(dgvr))
                        {
                            dgvr.Cells[cmbColumns.Text].Value = minValue + rand.Next(range + 1);
                        }
                    }                    
                    break;     
                case "RandCustom":
                    List<string> lstCustom = new List<string>();
                    lstCustom.AddRange(txtCustom.Text.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries));                   
                    for (i = minModify; i < maxModify; i++)
                    {
                        DataGridViewRow dgvr = _MainDataGridView.Rows[i];
                        if (CheckCondition(dgvr))
                        {
                            dgvr.Cells[cmbColumns.Text].Value = lstCustom[rand.Next(lstCustom.Count)];
                        }
                    }   
                    break;
            }
            this.Close();
        }

        private bool CheckCondition(DataGridViewRow dgvr)
        {
            switch (ModifyType)
            {               
                case 1:
                    if (rtNull(dgvr.Cells[cmbColumns.Text].Value).Trim() != "")
                    {
                        return false;
                    }
                    break;
                case 2:
                    if (rtNull(dgvr.Cells[cmbColumns.Text].Value).Trim() == "")
                    {
                        return false;
                    }
                    break;
                default:                    
                    break;
            }
            return true;       
        }

        private int FindNumberFromString(string context)
        {
            string strSwp = "";
            for (int i = 0; i < context.Length; i++)
            {
                if (char.IsNumber(context, i))
                {
                    strSwp += context.Substring(i, 1);
                }
            }
            if (strSwp == "")
            {
                return 0;
            }
            return (int)Microsoft.VisualBasic.Conversion.Val(strSwp);                
        }

        public string rtNull(object obj)
        {
            if (obj == null)
            {
                return "";
            }
            return obj.ToString();
        }

        private void cmbUpdateMethod_SelectedValueChanged(object sender, EventArgs e)
        {
            if (cmbUpdateMethod.Text.StartsWith("Rand"))
            {
                txtValue.ReadOnly = true;
                if (cmbUpdateMethod.Text == "RandCustom")
                {
                    panelCustom.Visible = true;
                    panelCustom.Location = new Point(panelRange.Location.X, panelRange.Location.Y);
                    panelRange.Visible = false;
                }
                else
                {
                    panelCustom.Visible = false;
                    panelRange.Visible = true;
                }
            }
            else
            {
                txtValue.ReadOnly = false;
                panelRange.Visible = false;
            }
        }
       
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -