我找到了一种使数据动态变化的方法。 我在c#中使用MVVM WinForm
在表单中,创建一个私有属性:
private int alertControlWidth;
现在,在您的timer_tick中:
alertControlWidth = viewModel.GetAlertControlWidth(MyListOfObjects) *10;
ShowAlert(MyListOfObjects); //do your stuff in it
然后,您继续使用设计器,单击AlertControl,事件,然后双击BeforeFormShow。在表单代码的新方法中,使用以下命令:
e.AlertForm.Width = alertControlWidth;
现在是viewModel:
GetAlertControlWidth(List<Model> list)
{
var maxLength =0;
var message = "";
foreach (var item in list)
{
message = list.Hour + list.Name + list.Date + ...(your data)
if(message.Length > maxLength)
{
maxLength = message.Length;
}
}
return maxLength + 5;
}
我返回+5的原因是因为我有一个具有32x32的图标。因此,该图标至少要占用32像素,因此要剩下5 * 10 = 50 -32 = 18像素,以确保您的数据不会从新行开始。
希望对您有所帮助! 我不是有史以来最好的代码,但是可能很有用,因为DEvExpress没有AutoWidth模式。
最诚挚的问候!