Using the TextBox.ReadOnly property
TextBox.ReadOnly = true;
For a Non-Grey background you can change the TextBox.BackColor property to SystemColors.Window Color
textBox.BackColor = System.Drawing.SystemColors.Window;
When this property is set to true, the contents of the control cannot
be changed by the user at runtime. With this property set to true, you
can still set the value of the Text property in code. You can use this
feature instead of disabling the control with the Enabled property to
allow the contents to be copied and ToolTips to be shown.