【问题标题】:How to combine two buttons如何组合两个按钮
【发布时间】:2017-10-19 17:48:41
【问题描述】:

button_playbutton_pause。我想将它们组合成一个按钮。第一次按下歌曲时,歌曲开始播放。第二次按下 - 暂停。第三次按下时,播放继续。我做不到。

请告诉我,我该如何组合它们。

private void button_play_Click(object sender, EventArgs e)
{
    if ((list_catalog.Items.Count != 0) && (list_catalog.SelectedIndex != -1))
    {
        string current = Vars.Files[list_catalog.SelectedIndex];
        Vars.CurrentTrackNumber = list_catalog.SelectedIndex;
        BassLike.Play(current, BassLike.Volume);
        label_time1.Text = TimeSpan.FromSeconds(BassLike.GetPosOfStream(BassLike.Stream)).ToString();
        label_time2.Text = TimeSpan.FromSeconds(BassLike.GetTimeOfStream(BassLike.Stream)).ToString();
        xrewind.Maximum = BassLike.GetTimeOfStream(BassLike.Stream);
        xrewind.Value = BassLike.GetPosOfStream(BassLike.Stream);
        timer1.Enabled = true;
    }
}

private void button_pause_Click(object sender, EventArgs e)
{
    BassLike.Pause();
}

【问题讨论】:

  • 那么为什么不能使用1 Button 编写代码,然后在第一个按钮上单击将文本更改为'Paused 第二次单击后检查按钮的文本.Contains("Paused")然后回到“开始”并做一些额外的逻辑..我看不出这里有什么问题..?或学习正确使用布尔值..
  • 基本上你想要一种方法来检查歌曲是否正在播放。理想情况下,您将拥有一种可以检查歌曲状态的方法。就像GetIsPlaying() 一样,您可以根据该函数的结果更改您的操作。简单的方法是使用 bool 属性 IsPlaying 跟踪状态并查询,每次按下按钮时都会翻转属性 IsPlaying = !IsPlaying; 并更新按钮文本

标签: c# winforms bass bass.dll


【解决方案1】:

类似:

private bool _isPlaying;

private void button_Click(object sender, EventArgs e)
{
    if(!_isPlaying)
    {
        mediaThing.Play();
        button1.Text = "Pause";
    }
    else
    {
        mediaThing.Pause();
        button1.Text = "Play";
    }

    _isPlaying = !_isPlaying;
}

【讨论】:

  • “暂停”而不是“停止”
  • @musefan tnx... 已修复。
  • 我不太明白你的方法。可以根据我的代码改一下吗?
  • @Gif 这有点奇怪。这个例子非常基础,比你的代码难。你是自己写的代码吗?最好自己实现。我的代码只描述了使用布尔字段,您可以在模式之间切换。播放/暂停
【解决方案2】:

最简单的方法是创建一个新的 Button 对象,并添加正确的方法来显示正确的图像。像这样的:

public class ButtonStateHandler:MonoBehaviour {
public boolean isClicked;
public Button myBtn;
public Sprite Play;
public Sprite Pause;

public void Click(){
    changeState();
}
private void changeState(){
    isClicked = !isClicked;
    if(isClicked)       myBtn.image.sprite = Play;
    else myBtn.image.sprite = Pause;
    }
}

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-04
    • 2021-09-28
    • 2020-03-03
    • 1970-01-01
    • 2019-01-19
    • 1970-01-01
    • 2016-12-30
    • 1970-01-01
    相关资源
    最近更新 更多