画面上にボタンが1つしかない場合、テキストエリアにカーソルがある状態で、
リターンキーをクリックすると、ボタンにフォーカスがいってしまって、
強制的にポストバックがかかってしまいます。

これがいやだ!という場合の回避策です。

・ 画面設計をみなおす

えーーーww

うそです。

いろいろな技術を駆使するとこんな感じで回避できます
・ASP.NET 2.0 からできるようになった、defaultbutton で、ダミーのボタンを設定。
  <form id="form1" runat="server" defaultbutton="DummyButton">
・ダミーのボタンは、幅を0にして見えなくする(Width="0px")
・ダミーのボタンのポストバックを無効にする。(OnClientClickプロパティに「return false;」を設定

ここまでやったあと、
やっぱり、ボタンにフォーカスを!
というケースでは、コードでこんな感じにします。

his.Form.DefaultButton = コントロールID.UniqueID;

マスターページの場合は、

base.Form.DefaultButton = コントロールID.UniqueID;   //MasterPageの場合


ですかね。

 

以下、テキストボックス2個、見た目のボタン1個、ダミーボタン1個を張り付けたWebフォームのコード

Default.aspx

<form id="form1" runat="server" defaultbutton="DummyButton">

<div>

    <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox><br />

    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br />

    <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />

    <asp:Button ID="DummyButton" runat="server" OnClientClick="return false;" Text="Button"

        Width="0px" /></div>

</form>


コードビハインド Default.aspx.cs

public partial class _Default : System.Web.UI.Page

{

    protected void Page_Load(object sender, EventArgs e)

    {

        //base.Form.DefaultButton = Button1.UniqueID;   //MasterPageの場合

        this.Form.DefaultButton = Button1.UniqueID;   <=== コメントアウトするとフォーカスがあたらない

    }

 

    protected void Button1_Click(object sender, EventArgs e)

    {

        this.TextBox1.Text = "ボタンが押された";

    }

}

 

画面イメージ

 

 

ーーーーーーーーーーーーーー
ダミーボタンがいまいちいけてない気がします・・・・
もっといい対策があったらおしえてくださいーww