Je tente de créer un contrôle personnalisé qui accepte les entrées en fonction de l'option sélectionnée. Je veux limiter le point décimal à un seul pour que l'utilisateur n'entrent pas plusieurs "." Comment puis-je faire ceci?C# Aide Création de contrôle personnalisé
using System;
using System.Windows.Forms;
using System.ComponentModel;
namespace DT_Controls
{
public enum Options { Any, Alphabets, Alpha_Numeric, Numeric }
public class TextBox_Pro : TextBox
{
Options _Opt = 0;
bool _Flag = false;
int Count = 0;
[Category("Behavior")]
[Description("If set as true will accept decimal values when SetOption is Numeric")]
public bool AcceptDecimal
{
get { return _Flag; }
set { _Flag = value; }
}
[Category("Behavior")]
[Description("Controls the type of value being entered into the TextBox_Pro")]
public Options SetOption
{
get { return _Opt; }
set { _Opt = value; }
}
public TextBox_Pro()
{
this.KeyPress += TextBox_Pro_KeyPress;
}
private void TextBox_Pro_KeyPress(object sender, KeyPressEventArgs e)
{
if (Convert.ToInt32(e.KeyChar) == 8)
return;
switch (_Opt)
{
case Options.Numeric:
if (_Flag == true)
if (Convert.ToInt32(e.KeyChar) == 46)
return;
if (char.IsDigit(e.KeyChar) == false)
{
MessageBox.Show("Enter Numeric Values Only");
e.Handled = true;
}
break;
case Options.Alphabets:
if(char.IsLetter(e.KeyChar)==false && Convert.ToInt32(e.KeyChar) != 32)
{
MessageBox.Show("Enter Only Aplhabets");
e.Handled = true;
}
break;
case Options.Alpha_Numeric:
if (char.IsLetterOrDigit(e.KeyChar) == false)
{
MessageBox.Show("Enter Only Alphabets Or Numbers");
e.Handled = true;
}
break;
}
}
}
}
exemple, je ne veux pas l'utilisateur d'entrer 12 ..... 123 je veux utilisateur d'entrer 12,123 et après un. il devrait désactiver le drapeau, mais quand je le fais, il ne me laissera pas entrer "." même après avoir enlevé le "."
Merci beaucoup, cela a fonctionné totalement :) J'ai besoin de ce drapeau parce que j'avais besoin d'une propriété pour régler le temps pour permettre des décimales ou non. – DeadlyTitan