public void ClearValue()
 {
     NullCheckBox.Checked = false;
     ValidControl.SetError(errPositionControl, "");
     ValueControl.Text = "";
     if (ValueControl is ComboBox ComboControl)
     {
         ComboControl.SelectedIndex = -1;
     }
     else if (ValueControl is CheckBox CheckBox)
     {
         CheckBox.Checked = false;
     }
 }
 private void NullCheckBox_CheckedChanged(object sender, EventArgs e)
 {
     ValueControl.Enabled = !NullCheckBox.Checked || !JColumn.IsNullable;
     ValidControl.SetError(errPositionControl, "");
 }
 private void TextControl_TextChanged(object sender, EventArgs e)
 {
     ValidControl.SetError(errPositionControl, "");
 }
        public bool CheckValid(int lineIndex)
        {
            ValidControl.SetError(errPositionControl, "");

            //確認Null
            if (JColumn.IsNullable && NullCheckBox.Checked)
            {
                return(true);
            }
            else if (!JColumn.IsNullable && NullCheckBox.Checked)
            {
                ValidControl.SetError(NullCheckBox, string.Format(Res.JE_VAL_NOT_NULLABLE));
                return(false);
            }

            //確定型態符合
            if (ValueControl is Label)
            {
                return(true);
            }
            else if (ValueControl is TextBox)
            {
                if (!ChangeTextToString(ValueControl.Text).TryParseJType(JColumn.Type, out parsedValue))
                {
                    ValidControl.SetError(errPositionControl, string.Format(Res.JE_VAL_INVALID_CAST, ValueControl.Text));
                    return(false);
                }
            }
            else if (ValueControl is CheckBox)
            {
                if (!(ValueControl as CheckBox).Checked.TryParseJType(JColumn.Type, out parsedValue))
                {
                    ValidControl.SetError(errPositionControl, string.Format(Res.JE_VAL_INVALID_CAST, ValueControl.Text));
                    return(false);
                }
            }
            else if (ValueControl is ComboBox) //確認Choice 正確
            {
                if ((ValueControl as ComboBox).SelectedIndex == -1 || !(ValueControl as ComboBox).SelectedItem.TryParseJType(JColumn.Type, out parsedValue))
                {
                    ValidControl.SetError(errPositionControl, string.Format(Res.JE_VAL_CHOICE_VALUE_NOT_EXIST, (ValueControl as ComboBox).SelectedItem ?? Const.NullString));
                    return(false);
                }
            }

            //確認Regex正確
            if (JColumn.Type == JType.String)
            {
                if (!string.IsNullOrEmpty(JColumn.RegularExpression))
                {
                    if (!Regex.IsMatch(ChangeTextToString(ValueControl.Text), JColumn.RegularExpression))
                    {
                        ValidControl.SetError(errPositionControl, string.Format(Res.JE_VAL_REGEX_IS_NOT_MATCH, ValueControl.Text));
                        return(false);
                    }
                }
            }

            //確認MinMax正確
            if (JColumn.Type.IsNumber() || JColumn.Type.IsDateTime())
            {
                if (!string.IsNullOrEmpty(JColumn.MinValue) && parsedValue.CompareTo(JColumn.MinValue.ParseJType(JColumn.Type), JColumn.Type) == -1)
                {
                    ValidControl.SetError(errPositionControl, string.Format(Res.JE_VAL_LESS_THEN_MIN_VALUE, ValueControl.Text, JColumn.MinValue));
                    return(false);
                }
                if (!string.IsNullOrEmpty(JColumn.MaxValue) && parsedValue.CompareTo(JColumn.MaxValue.ParseJType(JColumn.Type), JColumn.Type) == 1)
                {
                    ValidControl.SetError(errPositionControl, string.Format(Res.JE_VAL_GREATER_THEN_MAX_VALUE, ValueControl.Text, JColumn.MaxValue));
                    return(false);
                }
            }

            //確認MaxLength正確
            if (JColumn.MaxLength != 0)
            {
                if (parsedValue.ToString().Length > JColumn.MaxLength)
                {
                    ValidControl.SetError(errPositionControl, string.Format(Res.JE_VAL_TEXT_MAXIMUM_LENGTH_OVER, JColumn.MaxLength));
                    return(false);
                }
            }

            //確認唯一值
            if (JColumn.IsUnique)
            {
                int columnIndex = JTable.Columns.IndexOf(JColumn);
                for (int i = 0; i < JTable.Count; i++)
                {
                    if (i != lineIndex && parsedValue == JTable[i][columnIndex])
                    {
                        ValidControl.SetError(errPositionControl, string.Format(Res.JE_VAL_VALUE_IS_NOT_UNIQUE, parsedValue));
                        return(false);
                    }
                }
            }

            //跳過Key檢查

            //外部驗證 - FK驗證 跳過
            //if (JColumn.FKTable != null && JColumn.FKColumn != null)
            //{
            //    //有錯表示有欄位錯誤
            //    JTable jt = Var.Tables.Find(m => m.Name == JColumn.FKTable);
            //    int columnIndex = jt.Columns.FindIndex(m => m.Name == JColumn.FKColumn);
            //    //結束

            //    if (!jt.Loaded)
            //        if (!MainForm.LoadOrScanJsonFile(jt))
            //            return false;

            //    if (!jt.Lines.Exists(m => ChangeStringToText(m.Values[columnIndex].ToString(jt.Columns[columnIndex].Type)) == ValueControl.Text))
            //    {
            //        ValidControl.SetError(errPositionControl, string.Format(Res.JE_VAL_FK_VALUE_NOT_FOUND, ValueControl.Text));
            //        return false;
            //    }
            //}
            return(true);
        }
 private void ComboControl_SelectedIndexChanged(object sender, EventArgs e)
 {
     ValidControl.SetError(errPositionControl, "");
 }