0

ボタンが5秒後に再び有効になるように、次のコードにタイマーを入れるつもりです。ご覧のとおり、ユーザーが 5 メッセージを送信すると、送信ボタンが無効になります。5秒経過後に有効にしたい。

どんな提案でも大歓迎です。

public bool stopSpam(int counter)
    {
        int spam = counter;

        if (spam < 6)
        {
            return false;
        }
        else
        {
            return true;
        }
    }

    private void button1_Click(object sender, EventArgs e)
    {
        counter++;

        bool check = stopSpam(counter);
        if (check == false)
        {
            if (textBox2.Text != "")
            {
                if (textBox2.Text.ToLower().StartsWith("/"))
                {
                    onCommand(textBox2.Text);
                    string datetimestring = string.Format("{0:yyyy-MM-dd_hh-mm-ss-tt}.txt", DateTime.Now);
                    String exePath = string.Format(Application.StartupPath + "\\logs\\" + "msglogs {0}", datetimestring);
                    StreamWriter writer = File.CreateText(exePath);
                    writer.Write(textBox1.Text);
                    writer.Close();
                    textBox2.Text = "";
                }
                else
                {
                    m_ChildConnection.SendMessage("MSG :" + textBox2.Text);
                    string datetimestring = string.Format("{0:yyyy-MM-dd_hh-mm-ss-tt}.txt", DateTime.Now);
                    String exePath = string.Format(Application.StartupPath + "\\logs\\" + "msglogs {0}", datetimestring);
                    StreamWriter writer = File.CreateText(exePath);
                    writer.Write(textBox1.Text);
                    writer.Close();
                    textBox2.Text = "";
                }
            }
        }
        else
        {
            button1.Enabled = false;
        }

よろしくお願いします!

4

3 に答える 3

2

タイマーを用意し、その間隔を 5 秒 (5000) に設定します。デフォルトでは無効のままにしてください。

ボタンを押すとタイマーが有効になります

private void button1_Click(object sender, EventArgs e)
{
    button1.Enabled = false;
    timer.Enabled = true;
}

5 秒後にティックが発生したら、ボタンを有効にしてタイマーを再度無効にします。

private void timer_Tick(object sender, EventArgs e)
{
    button1.Enabled = true;
    timer.Enabled = false;
}
于 2012-07-25T03:39:25.380 に答える
1

達成しようとしていることを理解するのは難しいですが、次の手順を実行して、5 秒後にボタンの有効化を無効にすることができます。

追加:

private Timer t;

クラス変数として。

次に、 InitializeComponent の後に次を追加します。

t = new Timer(5000){Enabled = false, Tick += (myTick)};

次に、このメソッドを追加します。

private void myTick(object source, ElapsedEventArgs e)
{
    button1.Enabled = true;
}

また、このメソッドを更新することを検討してください。

stopSpam メソッドを使用して、次のことを行います。

public bool stopSpam(int counter)
{
   return counter >= 6;
}

実際、メソッドは実際には必要ありません。

変更するだけ

if(check == false)

if(counter > 5)
于 2012-07-25T04:02:44.303 に答える
0

System.Timers.Timerクラスを使用してタイマーを配置するだけです。

//Define the timer 
private System.Timers.Timer buttonTimer;

// Initialize the timer with a five second interval.
buttonTimer= new System.Timers.Timer(5000);

// Hook up the Elapsed event for the timer.
buttonTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);

//Start the timer
buttonTimer.Start();

// Enable the button in timer elapsed event handler
private static void OnTimedEvent(object source, ElapsedEventArgs e)
{
    button1.Enabled = true;
}
于 2012-07-25T03:46:27.330 に答える