代碼如下:

public partial class Textboxtext : Form


...{

public Textboxtext()


...{

InitializeComponent();

btnClose.CausesValidation = false;//當單擊按鈕時不考慮驗証狀態

txtUsename.Tag = false;

txtAddress.Tag = false;

txtAge.Tag = false;

txtOccupation.Tag = false;

btnOK.Enabled = false;

txtUsename.Validating += new CancelEventHandler(txtBoxEmpty_Validating);

txtAddress.Validating += new CancelEventHandler(txtBoxEmpty_Validating);

txtOccupation.Validating += new CancelEventHandler(txtOccupation_Validating);

txtAge.KeyPress += new KeyPressEventHandler(txtAge_KeyPress);

txtAge.Validating += new CancelEventHandler(txtBoxEmpty_Validating);

txtUsename.TextChanged += new EventHandler(txt_TextChanged);

txtAddress.TextChanged += new EventHandler(txt_TextChanged);

txtOccupation.TextChanged += new EventHandler(txt_TextChanged);

txtAge.TextChanged += new EventHandler(txt_TextChanged);

Combox.KeyDown += new KeyEventHandler(Combox_KeyDown);


LoadCombox();

}


void Combox_KeyDown(object sender, KeyEventArgs e)


...{

int index = 0;

ComboBox cbo = (ComboBox)sender;

if (e.KeyCode == Keys.Enter)


...{

index = cbo.FindStringExact(cbo.Text);

if (index < 0)

cbo.Items.Add(cbo.Text);

//else cbo.SelectedIndex = index;

}

if (e.KeyCode == Keys.Delete)


...{

index = cbo.FindStringExact(cbo.Text);

if (index&nnbsp; Combox.KeyDown += new KeyEventHandler(Combox_KeyDown);


LoadCombox();

}


void Combox_KeyDown(object sender, KeyEventArgs e)


...{

int index = 0;

ComboBox cbo = (ComboBox)sender;

if (e.KeyCode == Keys.Enter)


...{

index = cbo.FindStringExact(cbo.Text);

if (index < 0)

cbo.Items.Add(cbo.Text);

//else cbo.SelectedIndex = index;

}

if (e.KeyCode == Keys.Delete)


...{

index = cbo.FindStringExact(cbo.Text);

if (index&nnbsp; Combox.KeyDown += new KeyEventHandler(Combox_KeyDown);


LoadCombox();

}


void Combox_KeyDown(object sender, KeyEventArgs e)


...{

int index = 0;

ComboBox cbo = (ComboBox)sender;

if (e.KeyCode == Keys.Enter)


...{

index = cbo.FindStringExact(cbo.Text);

if (index < 0)

cbo.Items.Add(cbo.Text);

//else cbo.SelectedIndex = index;

}

if (e.KeyCode == Keys.Delete)


...{

index = cbo.FindStringExact(cbo.Text);

if (index&n

cbo.Items.Remove(cbo.Text);

}

}

void LoadCombox()


...{

string FilePath = Application.StartupPath + @" xt.txt";

bool exist = File.Exists(FilePath);

if (exist == false)


...{

Directory.CreateDirectory(Application.StartupPath);

FileStream fs = new FileStream(FilePath, FileMode.Create);

fs.Close();

}

System.IO.StreamReader sr = new System.IO.StreamReader(FilePath);

try


...{


string input;

&n


...{

input = sr.ReadLine();

if (input != ""&&input!=null)

Combox.Items.Add(input);

}

while (sr.Peek() != -1);

sr.Close();

}

catch (Exception)


...{

MessageBox.Show("沒有找到相關文件");

}

//finally

//{ }

}

void SaveCombox()


...{

try


System.IO.StreamWriter sw = new System.IO.StreamWriter(Application.StartupPath + @" xt.txt");

foreach (string item in Combox.Items)

sw.WriteLine(item);

sw.Flush();

sw.Close();

}

catch (Exception err)


...{

MessageBox.Show(err.Message);

}

}


void txt_TextChanged(object sender, EventArgs e)


...{

TextBox tb = (TextBox)sender;

if (tb.Text.Length == 0 && tb != txtOccupation)



tb.BackColor = Color.Purple;

tb.Tag = false;

}

else if (tb == txtOccupation && (txtOccupation.Text.Length != 0 && tb.Text.CompareTo("程序員") != 0))


...{

tb.BackColor = Color.Purple;

tb.Tag = false;

}

else


...{

tb.BackColor = SystemColors.Window;

tb.Tag = true;

}

ValidateAll();

}


void txtOccupation_Validating(object sender, CancelEventArgs e)



TextBox tb = (TextBox)sender;

if (tb.Text.CompareTo("程序員") == 0 || tb.Text.Length == 0)


...{

tb.BackColor = SystemColors.Window;

tb.Tag = true;

}

else


...{

tb.BackColor = Color.Purple;

tb.Tag = false;

}

ValidateAll();

}


void txtAge_KeyPress(object sender, KeyPressEventArgs e)


...{

if ((e.KeyChar < 48 || e.KeyChar > 57)&&e.KeyChar!=8)//ASC值8表示退位鍵

e.Handled

}


void txtBoxEmpty_Validating(object sender, CancelEventArgs e)


...{

TextBox tb = (TextBox)sender;

if (tb.Text.Length == 0)


...{

tb.BackColor = Color.Purple;

tb.Tag = false;

//e.Cancel = true;

}

else


...{

tb.BackColor = SystemColors.Window;

tb.Tag = true;

}

ValidateAll();

}

private void btnOK_Click(object sender, EventArgs e)


string outputtxt;

outputtxt = "Usename:" + txtUsename.Text + Environment.NewLine;

outputtxt += "Address:" + txtAddress.Text + " ";

outputtxt += "Occupation:" + txtOccupation.Text + " ";

outputtxt += "Age:" + txtAge.Text + " ";

outputtxt += "Sex:" +(string)(RdoMale.Checked ? "Male" : "Female") + " ";

outputtxt += "星座:" + Combox.Text + " ";

txtOutput.Text += outputtxt;

}


private void btnHelp_Click(object sender, EventArgs e)


...{

string outputtxt;

outputtxt = "Usename: 用戶名(不能為空)" + Environment.NewLine;

outputtxt += "Address: 地址(不能空空) ";

outputtxt += "Occupation: 職業(必須是程序員或為空) ";

outputtxt += "Age: 年齡(大於或等於零的一個數字) ";

outputtxt += "Sex: 性別 ";

outputtxt += "星座: 所屬星座 ";

txtOutput.Text += outputtxt;

}

void ValidateAll()


...{

btnOK.Enabled = (bool)txtUsename.Tag && (bool)txtAddress.Tag && (bool)txtAge.Tag && (bool)txtOccupation.Tag;

}


private void btnClose_Click(object sender, EventArgs e)


...{

Application.Exit();

}

}
運行效果:
