1

かなり率直な質問ですが、それを行うための正しいコーディングを忘れてしまいました。ボイドを設定していて、ボタンをクリックしたときに実行したいです。

実行したい無効:

    public void giveWeapon(int clientIndex, string weaponName)
    {

        uint guns = getWeaponId(weaponName);

        XDRPCExecutionOptions options = new XDRPCExecutionOptions(XDRPCMode.Title, 0x822728F8);  //Updated
        XDRPCArgumentInfo<uint> info = new XDRPCArgumentInfo<uint>(getPlayerState(clientIndex));
        XDRPCArgumentInfo<uint> info2 = new XDRPCArgumentInfo<uint>((uint)guns);
        XDRPCArgumentInfo<uint> info3 = new XDRPCArgumentInfo<uint>((uint)0);
        uint errorCode = xbCon.ExecuteRPC<uint>(options, new XDRPCArgumentInfo[] { info, info2, info3 });
        iprintln("gave weapon: " + (guns.ToString()));
        giveAmmo(clientIndex, guns);
        //switchToWeapon(clientIndex, 46);

    }

そして、ボタンのクリックで実行したいだけです:

    private void button14_Click(object sender, EventArgs e)
    {
     // Call void here

    }
4

3 に答える 3

3

void関数 giveWeaponが値を返さないことを示すキーワードです。したがって、正しい質問は次のとおりです。「関数を呼び出すにはどうすればよいですか?」

答え:

private void button14_Click(object sender, EventArgs e)
{
    int clientIndex = 5; // use correct value
    string weaponName = "Bazooka"; // use correct value
    giveWeapon(clientIndex, weaponName);
}

が別のクラスで定義されている場合giveWeaponは、インスタンスを作成し、そのインスタンスでメソッドを呼び出す必要があります。つまり、次のようになります。

ContainingClass instance = new ContainingClass();
instance.giveWeapon(clientIndex, weaponName);

補足として、暗黙的に型指定されたローカル変数を使用すると、コードの可読性が大幅に向上します。

public void giveWeapon(int clientIndex, string weaponName)
{
    uint guns = getWeaponId(weaponName);

    var options = new XDRPCExecutionOptions(XDRPCMode.Title, 0x822728F8);  //Updated
    var info = new XDRPCArgumentInfo<uint>(getPlayerState(clientIndex));
    var info2 = new XDRPCArgumentInfo<uint>(guns); // guns is already uint, why cast?
    var info3 = new XDRPCArgumentInfo<uint>(0); // same goes for 0
    uint errorCode = xbCon.ExecuteRPC<uint>(options, new XDRPCArgumentInfo[] { info, info2, info3 });
    iprintln("gave weapon: " + guns); // ToString is redundant
    giveAmmo(clientIndex, guns);
    //switchToWeapon(clientIndex, 46);
}
于 2012-09-02T04:31:42.460 に答える
1

単に行く:

private void button14_Click(object sender, EventArgs e)
{
    giveWeapon(clientIndex, weaponName);
}

giveWeaponそれと同じクラスにいる限り、button14それは機能します。

お役に立てれば!

于 2012-09-02T04:29:40.723 に答える
1

それからそれを呼び出します

private void button14_Click(object sender, EventArgs e)
{

   giveWeapon(10, "Armoured Tank");
}
于 2012-09-02T04:30:43.297 に答える