You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在btnPrint点击事件中用单个MessageBox显示SortedList键值对

嘿,我懂你要的效果啦!就是把SortedList里的所有日期和任务内容一次性塞进一个MessageBox里,不用弹一堆窗口对吧?我给你整一个简单靠谱的方案~

首先,先确认下你的SortedList声明应该是类似这样的(我补全了你没写完的部分):

SortedList<DateTime, string> task = new SortedList<DateTime, string>();
// 假设你已经添加了任务项,比如:
task.Add(new DateTime(2018, 4, 28, 11, 37, 0), "Making a question on stackoverflow");
task.Add(new DateTime(2018, 4, 28, 15, 0, 0), "Pulling my hair out");

然后在你的btnPrint_Click事件里,咱们用StringBuilder来高效拼接所有内容,最后一次性显示:

private void btnPrint_Click(object sender, EventArgs e)
{
    // 初始化字符串构建器,用来攒所有内容
    StringBuilder fullMessage = new StringBuilder();

    // 遍历SortedList里的每一项
    foreach (var taskItem in task)
    {
        // 按你要的格式拼接日期和任务文本,这里用空格分隔,要是想换行就换成Environment.NewLine
        fullMessage.Append($"{taskItem.Key.ToString("M/d/yyyy h:mm tt")} {taskItem.Value} ");
    }

    // 把攒好的内容丢进MessageBox,Trim()去掉最后多余的空格
    MessageBox.Show(fullMessage.ToString().Trim());
}

为啥用StringBuilder而不是直接拼字符串?因为如果任务多的话,直接用+=拼字符串会反复创建新对象,效率很低,StringBuilder就没这问题,专门干拼接的活儿~

要是你觉得每个任务换行更清晰,把Append里的空格换成Environment.NewLine就行,显示出来就是每个任务单独占一行,也很方便。

内容的提问来源于stack exchange,提问作者Ricky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:21:02