2017-12-05 6 views
0

これは単なる単純なものだと確信していますが、私はちょうどC#に入っています。変数を変更する

私のツールが私の3DSにデータを書き込むために使用する変数offsetsを変更する機能を私のボタンに割り当てる必要があります。

私は両方の変数を持っていますが、それを押したときにもう一度1を設定してから、もう一度押すと戻ってくると切り替えるように指示する方法はわかりません。

これは、その後、これは私が始めている私のボタンである

public partial class MainForm : Form 
{ 

    public delegate void LogDelegate(string l); 
    public LogDelegate delLastLog; 
    public string lastlog = ""; 
    public int pid = 0; 
    public PKHeX dumpedPKHeX = new PKHeX(); 
    //Possibly Ultra box layout Offset? 0x33015AB0 
    //Possibly Ultra Wondercard Offset? 0x33075BF4 
    public uint boxOff = 0x330D9838; 
    public uint wcOff = 0x331397E4; 
    public uint partyOff = 0x34195E10; 

私のツールを通じて呼びかけている私の変数を示し、ここに私のコードです。

private void btn_ConvertMode_Click(object sender, EventArgs e) 
{ 
    MessageBox.Show("Ultra Support Mode Activated!", "WonderInjection", MessageBoxButtons.OK); 
    return; 
} 

アイデアみたいですか?基本的にboxoffwcoffオフセット私はボタンのコマンドをコメントアウトしたものに切り替える必要があります。

+0

あなたはトグルボタンのようなものが必要だと言っているのですか?単に 'boxoff'と' wcoff'変数の値を変更するには –

+0

はい!しかし、私はそれを書く方法を知らない。 –

答えて

0

トグル状態を保持する変数boolを作成するだけです。各ボタンのクリックイベントでは、この変数の状態を切り替える:

toggleVar = !toggleVar; 

次に使用するオフセットを決定するために、このtoggleVarの値を使用します。

0
public bool isDefaultOffset(uint boxOff,uint wcOff) 
{ 
    if((boxOff==0x330D9838))&&(wcOff==0x331397E4)) 
    return true; 
    else 
    return false; 
} 

    public void ChangeOffSet(uint boxOff,uint wcOff) 
{ 
if(isDefaultOffset(boxOff,wcOff)) 
    { 
     boxOff= 0x33015AB0; 
     boxOff= 0x33075BF4; 
    } 
    else 
    { 
    // set default values here 
    } 

} 

あなたのイベントでchangeOffset()メソッドを呼び出します。

0

可能なデータを格納し、デキューしてエンキューする2つのキューを作成できます。キューに2つの値しかない場合は、トグルボタンのように機能します。

私はその後、私は、コンストラクタまたはいくつかの他の方法では、このようなキューを開始します。この

Queue<string> qbox; 
Queue<string> qwc; 

のようにクラスのキューを宣言します。

qbox = new Queue<string> 
{ 
    "0x330D9838", "0x33015AB0" 
}; 
qwc = new Queue<string> 
{ 
    "0x331397E4", "0x33075BF4" 
}; 

その後、私はこのようにそれらを使用します。キューの先頭から値を取得します

private void btn_ConvertMode_Click(object sender, EventArgs e) 
{ 
    qbox.Enqueue(box); 
    box = qbox.Dequeue(); 

    qwc.Enqueue(wc); //puts wc value to the back of the queue 
    wc= qbox.Dequeue(); //removes first value from a queue and puts it in wc variable 
} 

qboxはキューとボックスの末尾にあるボックス値を追加します。デキューされたオブジェクトはキューから削除されます。 wcと同じです。私はこのアプローチが非常に読みやすく、管理できていると思います。複数のif ... thensに対処する必要がないからです。値を切り替えるだけです。

ボックス変数とwc変数も初期値で初期化する必要があることを覚えておく必要があります。

+0

さて、もし私がキューを使用していたら、私はuintの値を再び宣言する必要がありますが、boxOffとwcOffの代わりにメインフォームのqboxとqwcとして? –

+0

また、私は文字列に変換できません。 –