【问题标题】:Clearing textbox and adding to it - how to implement two modes?清除文本框并添加到它 - 如何实现两种模式?
【发布时间】:2015-05-28 12:30:28
【问题描述】:

我有这样一个代码,它从一些数组(可能有很多)生成随机问题到文本框中。每个问题都由表单上的某个按钮提出,并将结果复制到剪贴板。

      private void buttonHi_Click(object sender, EventArgs e)
       {
        string[] Hi = new string[]
        {"How are you?", "What's up?", "How have you been?"};
        Random X = new Random();
        string Hi = Hi[X.Next(0, Hi.Length)];
        TextBox.Text = Hi;
        Clipboard.SetText(TextBox.Text);
       }

        private void buttonQuestion_Click(object sender, EventArgs e)
       {
        string[] Question = new string[]
        {"Are you busy?", "What are you doing?", "Sleeping?"};
        Random X = new Random();
        string Hi = Question[X.Next(0, Question.Length)];
        TextBox.Text = Question;
        Clipboard.SetText(TextBox.Text);
       }

所以我可以打招呼或问问题。当我在问候之后问一个问题时,我的文本框中的问候消失了。但是,如果我想从不同按钮的结果中生成更长的短语怎么办?

所以我得到类似“嗨,你好吗?你在做什么?” 有没有办法在不删除之前的文本的情况下将文本添加到文本框中? 然后将整体结果复制到剪贴板。

同时还有一个旧选项,即按下新按钮覆盖旧文本。我想在表单中进行这样的切换,但不知道该怎么做。

附:我知道我可以将两个数组连接到一个按钮并获得组合结果,但这不是我需要的,因为我可以拥有更多按钮并以不同的组合使用它们。

【问题讨论】:

    标签: c# arrays winforms


    【解决方案1】:

    怎么样

    TextBox.Text = String.Format("{0} {1}", TextBox.Text, Question);
    

    然后当你说 Clipboard.SetText(TextBox.Text); 时,它会复制所有文本

    编辑:

    如果您想替换问题但保留问候语,那么我建议保留对当前问题的参考,如下所示

    private string _currentQuestion = String.Empty;
    private void buttonHi_Click(object sender, EventArgs e)
       {
        string[] Hi = new string[]
        {"How are you?", "What's up?", "How have you been?"};
        Random X = new Random();
        _currentQuestion = Hi[X.Next(0, Hi.Length)];
        TextBox.Text = _currentQuestion;
        Clipboard.SetText(TextBox.Text);
       }
    
        private void buttonQuestion_Click(object sender, EventArgs e)
       {
        string[] Question = new string[]
        {"Are you busy?", "What are you doing?", "Sleeping?"};
        Random X = new Random();
        string Hi = Question[X.Next(0, Question.Length)];
        String.Format("{0} {1}", _currentQuestion, Question)
        Clipboard.SetText(TextBox.Text);
       }
    

    【讨论】:

    • 非常感谢!据我了解,这种方式在替换文本时的简单版本不起作用?我只是想放一个单选按钮或其他东西来在两种模式之间切换。
    【解决方案2】:

    如果我完全理解,您想在同一文本框中的问题中添加问题吗?

    喜欢:

    TextBox.Text = TextBox.Text + " " + Question;
    

    【讨论】:

    • 非常感谢!据我了解,这种替换文本时的简单版本不起作用?我只是想放一个单选按钮或其他东西来在两种模式之间切换。
    【解决方案3】:

    您的问题由两部分组成。第一:

    有没有办法在不删除之前的文本的情况下向文本框添加文本?​​

    是的,只需附加文本,如下所示:

    TextBox.Text += " " + Question;
    

    第二:

    然后将整体结果复制到剪贴板。

    当然。设置Clipboard:

    Clipboard.SetText(TextBox.Text);
    

    【讨论】:

    • 非常感谢!据我了解,这种替换文本时的简单版本不起作用?我只是想放一个单选按钮或其他东西来在两种模式之间切换。
    • 这也是可能的。保留两个变量用于问答。单击单选按钮时,将文本保存到适当的变量中,并用另一个值覆盖文本框的值。 (你也可以使用绑定来做到这一点,但现在可能太复杂了)
    【解决方案4】:

    您可以使用AppendText 如下:

    TextBox.AppendText("Hi");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-16
      • 1970-01-01
      • 2018-06-19
      • 1970-01-01
      • 1970-01-01
      • 2012-10-24
      相关资源
      最近更新 更多