Вот способ сделать это с помощью javascript в событии onfocus самого Textbox.
Выполнение этого с помощью javascript имеет то преимущество, что вам не нужно делать это в коде позади, что может быть сложно, если вам нужно сделать это в gridviews или подобном.
Этоjavascript-код тестируется только в Internet Explorer, и некоторые его части будут работать только в IE, как, например, часть createTextRange, которая предназначена только для того, чтобы каретка оказалась в начале текста в текстовом поле, но эта часть может бытьпропущено, если не нужно.
Если ядро этой техники работает в других браузерах, то должна быть возможность сделать код кросс-браузерным.Суть идеи здесь - размытие после установки только для чтения, а затем тайм-аут, чтобы снова установить фокус.
Если вы устанавливаете только чтение только тогда, оно не становится доступным только для чтения, пока в следующий раз вы не выделите текстовое поле.
И, конечно, код можно поместить в функцию, которая вызывается с помощью "это "как аргумент.
<asp:TextBox
ID="txtSomething"
runat="server"
Text='<%# Bind("someData") %>'
onfocus="
var rng = this.createTextRange();
rng.collapse();
rng.select();
if (this.allowFocusevent=='0') {return;};
this.allowFocusevent='0';
this.readOnly=true;
this.blur();
var that=this;
setTimeout(function(){that.focus()},0);
"
/>