Why do dots always print when the bool value should be set to true after one dot?

Code:
private void do3() 
		{
			if(TorF(TB1.Text))
			RTB2.Text=TB1.Text;
		}
	bool check2=false;
		public bool TorF(string str)
		{
			char[] chr = str.ToCharArray();
			
            
			foreach (char dummy in chr)
			{
				if (char.IsDigit(dummy)) return true;
				else if (dummy=='.'&& check2==false) {check2=true; return true;}
			}
			return false;
		}