改变变量

时间:2017-12-05 06:02:46

标签: c# optimization

我确信这只是一些简单的事情,但我刚刚进入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偏移我需要能够切换到我已经注释掉按钮命令的那些。

3 个答案:

答案 0 :(得分:0)

我只是创建一个bool类型的变量来保持切换状态。在每个按钮单击事件上,切换此变量的状态:

<?php 
  $gridColumns = [
      ['class' => 'yii\grid\SerialColumn'],
      'username',
      'email',
      [
         'label' => Yii::t('app','User Access'),
         'value' => function($model){ 
              if($model->access_level == 1) { return 'Read/Write/Import/Export'; }
              if($model->access_level == 2) { return 'Read/Write'; }
              if($model->access_level == 3) { return 'Read'; }
            }
      ],
      'fullname',
      // [
      //    'label' => Yii::t('app','Status'),
      //    'value' => function($model){ 
      //         if($model->status == 10) { return 'Active'; }
      //         if($model->status == 0) { return 'Inactive'; }
      //       }
      // ],
      [
     'attribute' => 'created_at',
     'format' => ['date' , 'php:d/m/Y'],
     'label' => Yii::t('app','Created On'),
     'headerOptions' => ['style' => 'width:12%;'],
      ],
      [
         'attribute' => 'updated_at',
         'format' => ['date' , 'php:d/m/Y'],
         'label' => Yii::t('app','Modified On'),
         'headerOptions' => ['style' => 'width:12%;'],
      ],
      // 'updated_by',
      [
         'attribute' => 'updated_by',
         'label' => Yii::t('app','Modified By'),
         'headerOptions' => ['style' => 'width:12%;'],
        'value' => 'user.username',
        //  'value' => function($model){ 
        //       return $model->user->username;
        // }
      ],

      // ['class' => 'yii\grid\ActionColumn'],
  ]; 
      echo ExportMenu::widget([
               'dataProvider' => $dataProvider,
               'columns' => $gridColumns,
               'target' => ExportMenu::TARGET_BLANK,
               'showConfirmAlert' => false,
               'filename' => 'Users',
               'dropdownOptions' => [
                'label' => 'Export',
                'class' => 'btn btn-info', 
                'export' => true,
                'toolbar'=>[
                '{export}',
                '{toggleData}'
                ]          
              ],
               'exportConfig'=>[
               ExportMenu::FORMAT_HTML=>false,
               ExportMenu::FORMAT_TEXT=>false,
               ExportMenu::FORMAT_PDF=>false,
               ExportMenu::FORMAT_EXCEL=>false,
               ],
          ]);?>

然后使用此toggleVar的值来决定使用哪个偏移量。

答案 1 :(得分: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()方法。

答案 2 :(得分: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
}

qbox会将box值添加到队列的末尾,而box会从队列的开头获取值。从队列中删除出队的对象。 wc相同。我认为这种方法非常易读和可管理,因为你不必处理多个if ... thens。您只需在值之间切换。

你必须记住,框和wc变量也需要用一些初始值初始化。