小编niv*_*978的帖子

Windows窗体DataGridView中的Accordion

我需要在Windows窗体DataGridView中实现某种手风琴效果.当用户选择一行时,该行将展开以显示更多信息,如果可能,还会显示一些按钮或其他控件.问题是,我完全不知道如何做到这一点.我试图搜索网络,但我发现没有任何东西可以引导我在正确的方向上创建它.我希望有人能告诉我怎么做?(不一定是代码示例)

我创建了下面的模型来显示我想要做的事情.

我考虑过调整列高度并覆盖OnPaint方法.我只需要在第一个版本中显示一些文本.如果那可能会很棒.我知道将来我需要放置一些按钮或其他控件来对所选项目进行各种操作.如果实现起来非常复杂,我现在将跳过这一部分.我知道我可以使用工具提示文本和按钮列等.但在我的情况下,我需要做手风琴.

带手风琴样机的DataGridView

最好的问候Hans Milling ......

c# forms windows datagridview accordion

2
推荐指数
1
解决办法
1866
查看次数

如何将 Microsoft.Azure.Devices.Client.DeviceClient KeepAliveInSeconds 设置为大于 30 的数字

我正在研究通过卫星连接使用 MQTT(或 AMQP)。我正在使用基于 HTTPS 的 MQTT 来连接 Azure 中的 IoT 中心。卫星上的数据非常昂贵,我正在努力最大限度地减少此连接的“空闲”消耗。我可以通过更改 SaS 令牌的更新频率(默认 1 小时)和保持活动来实现此目的。

我正在使用 Microsoft.Azure.Devices NuGet 包中的 DeviceClient,在那里我可以创建一个 TransportSettings 对象并设置保持活动状态:

ITransportSettings transportSettings = new MqttTransportSettings(TransportType.Mqtt_WebSocket_Only)
{
    KeepAliveInSeconds = 90,
};
Run Code Online (Sandbox Code Playgroud)

然后我像这样创建连接:

var client = DeviceClient.CreateFromConnectionString(connectionString , new[] { transportSettings });
Run Code Online (Sandbox Code Playgroud)

我的经历是。如果我省略传输设置,连接每 5 秒发送一次保持活动状态。如果我将保持活动设置为 30 及以上的任何值,它总是每 30 秒发送一次保持活动。KeepAliveInSeconds 属性的描述告诉我们默认值为 300 秒: KeepAliveInSeconds 属性说明

但我的 Wireshark 跟踪讲述了一个不同的故事: Wireshark 跟踪

当 CreateFromConnectionString 中未给出 MqttTransportSettings 时,它将每 5 秒发送一次保持活动状态。当我添加设置时,我可以将保持活动时间设置为 10 或 30 秒,这可以工作,但如果我像本例一样将其设置为 90,它会保持 30 秒(大约 Wireshark 跟踪显示)。我尝试在 Azure 中查找是否可以更改其中的任何内容。而且IoT Hub上没有这样的设置。

因此,希望其他人经历过这种情况并找到解决方案,从客户端保持活动状态,而不是每 5 或 30 秒发送一次。我的目标是每隔 2-5 …

c# keep-alive azure azure-iot-hub azure-iot-sdk

1
推荐指数
1
解决办法
753
查看次数