2017-12-05 5 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

가능한 데이터를 저장하고 큐에서 큐를 제거하고 큐에 넣을 수있는 큐를 두 개 만들 수 있습니다. 큐에 값이 두 개만있는 경우 토글 단추와 똑같이 작동합니다.

나는 그럼 난 생성자 또는 다른 방법으로이 같은 큐를 시작하는 것이

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 
} 

버턴은 큐의 시작에서 값을 얻을 것 대기열 및 상자의 끝에 상자 값을 추가합니다. 대기열에서 제거 된 객체는 대기열에서 제거됩니다. wc와 동일합니다. 나는이 접근법이 매우 읽기 쉽고 managable하다고 생각합니다. 왜냐하면 여러 if ... thens를 다루어야하기 때문입니다. 값 사이를 토글합니다.

상자 및 wc 변수도 초기 값으로 초기화해야한다는 것을 기억해야합니다.

+0

좋아요 그럼 내가 대기열을 사용한다면 다시 내 uint 값을 선언해야하지만 qbox와 qwc는 boxOff 및 wcOff 대신 주 폼에 넣어야합니까? –

+0

또한 uint를 string으로 변환 할 수 없습니다. –