There are plentiful of ways to skin this cat. For instance you can do:
cmd.CommandText = @"
IF EXISTS (SELECT * FROM Employee WHERE name = @name)
PRINT 'The name ' + @name + ' has already been inserted.'
ELSE
INSERT INTO Employee (Name, Contact, Address, Email, Password)
VALUES(@name, @contact, @address, @email, @password)"
cmd.Parameters.Add("@name", SqlDbType.NVarChar, 40).Value = txt_Name.Text;
// and similar calls for remaining parameters
The most important thing to observe here is that I have replaced your inlining of the input values with parameters. The type of inlining you have above is a cardinal sin with lots of issues: opens for SQL injection, causes cache litter in SQL Server, is a nightmare with date values and the list goes on. Using parameters like I do above is easier and more efficient. And safe for SQL injection.
In my example above, SQL Server produces a PRINT message. You can set up an InfoMessage event handler to get this message. As I am an SQL person and .NET person, I don't have an example on top of my head.
Another alternative is to convey the situation in an output parameter.
And yet a way is simply to insert and set up an exception handler that traps error 2627, primary key violation.