问题出现在这句话sex.Text = sex.Text.Remove(sex.Text.Length-1,1);
当textBox.text值发生变化时就会再次的执行sex_TextChanged事件,而这是text为空了,就会出StartIndex 不能小于 0的错误。所以建议在if()条件判断处添加为空的的判断。
if (!(this.sex.Text.Equals("男") || this.sex.Text.Equals("女")) && !string.IsNullOrWhiteSpace(this.sex.Text)),另外建议用重写控件方法去完成你想要的逻辑好一点。