2017-08-16 6 views
1

クリックするたびに文字列値をスワップする簡単なボタンを作成したいと思います。ここに私のaspxとaspx.csファイルがあります。 ASPX:スワップバリュー毎回ボタンをクリック

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeFile="switch.aspx.cs" Inherits="_Default" %> 

<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server"> 
    <div class="col-md-offset-2 col-md-10"> 
     <asp:Button runat="server" OnClick="Switch" Text="Switch" CssClass="btn btn-default" /> 
    </div> 
    Translator From :<asp:Label runat="server" ID="testing"></asp:Label> 
    Translator To :<asp:Label runat="server" ID="testing1"></asp:Label> 
</asp:Content> 

aspx.cs:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Text; 
using System.Net; 
using System.IO; 
using System.Runtime.Serialization; 

public partial class _Default : Page 
{ 
    public void SwapStrings(ref string s1, ref string s2) 
    // The string parameter is passed by reference. 
    // Any changes on parameters will affect the original variables. 
    { 
     string temp = s1; 
     s1 = s2; 
     s2 = temp; 
     System.Console.WriteLine("Inside the method: {0} {1}", s1, s2); 
     testing.Text = s1; 
     testing1.Text = s2; 
    } 

    public void Switch(object sender, EventArgs e) 
    { 
     string str1 = "en"; 
     string str2 = "ja"; 
     System.Console.WriteLine("Inside Main, before swapping: {0} {1}", str1, str2); 

     SwapStrings(ref str1, ref str2); 
    } 
} 

私がやりたいことすべては、私は、 "から" と入れ替え "" の値をボタンをクリックしてください毎回です。ただし、コードは最初のクリックに対してのみ有効です。最後の値を保存するには、コードにある種のメモリが必要であると思います。誰かがコードを助けることができますか?

答えて

1

いつも同じstr1str2の値で始まっているからです。固定ラベルの代わりに現在のラベル値を取得する必要があります。

Swicth方法でこれにそれを変更してみてください:この場合には参照渡しにはポイントがありません

string str1 = testing.Text; 
string str2 = testing1.Text; 

サイドノートでは、あなたは彼メソッドの呼び出し後に元の変数に何もしていません。

+0

こんにちは、ありがとうございました。その後、初期値はどうですか?私は= "en"とto = "ja"の最初の値を求めます。その後、毎回スワップボタンをクリックします –

+1

aspxファイルにデフォルトとして直接設定するだけです: ' en' – musefan

1

設定したデフォルト値にページ読み込みを使用し、swtchボタンを押して値を切り替えたときにispostbackをチェックします。

public partial class WebForm2 : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      if (!IsPostBack) 
      { 
       testing.Text = "en"; 
       testing1.Text = "ja"; 
      } 

     } 

     protected void Switch(object sender, EventArgs e) 
     { 
      string tempLanguage = testing1.Text; 

      testing1.Text = testing.Text; 
      testing.Text = tempLanguage; 

     } 
    } 
関連する問題