相关疑难解决方法(0)

在更新WinForms中的控件期间闪烁(例如DataGridView)

在我的应用程序中,我有一个DataGridView控件,显示所选对象的数据.当我选择一个不同的对象(在上面的组合框中)时,我需要更新网格.不幸的是,不同的对象具有完全不同的数据,甚至是不同的列,因此我需要清除所有现有数据和列,创建新列并添加所有行.当这样做时,整个控件可怕地闪烁,需要很长时间.是否有一种通用的方法来使控件处于更新状态,因此它不会重新绘制自身,然后在完成所有更新后重新绘制它?

TreeViews当然可以:

myTreeView.BeginUpdate();
try
{
    //do the updates
}
finally
{
    myTreeView.EndUpdate();
}
Run Code Online (Sandbox Code Playgroud)

是否有通用的方法与其他控件,特别是DataGridView一起执行此操作?

更新:对不起,我不确定我是否足够清楚.我看到"闪烁",因为在单次编辑后,控件在屏幕上重新绘制,因此您可以看到滚动条缩小等.

.net c# winforms

7
推荐指数
4
解决办法
2万
查看次数

如何防止数据网格中的行在应用程序运行时闪烁

在我正在开发的应用程序中,我正在使用datagridview来显示数据.为了填充它,我要按一个按钮,后台工作人员将开始运行,它将填充一个数据表,当它完成运行时,它将使用数据表作为数据网格的数据源.这很好用,用户界面保持响应等等.但是现在我已经对行进行了着色,这取决于它们的值(我还在玩它,所以欢迎任何建议):

        private void ApplyColoring()
    {
        if (dataGridView1.DataSource != null)
        {
            foreach (DataGridViewRow dataGridRow in dataGridView1.Rows)
            {
                // hardmap a color to a column
                IDictionary<Int32, Color> colorDictionary = new Dictionary<Int32, Color>();
                colorDictionary.Add( 7, Color.FromArgb(194, 235, 211));
                colorDictionary.Add( 8, Color.Salmon);
                colorDictionary.Add( 9, Color.LightBlue);
                colorDictionary.Add(10, Color.LightYellow);
                colorDictionary.Add(11, Color.LightGreen);
                colorDictionary.Add(12, Color.LightCoral);
                colorDictionary.Add(13, Color.Blue);
                colorDictionary.Add(14, Color.Yellow);
                colorDictionary.Add(15, Color.Green);
                colorDictionary.Add(16, Color.White);

                foreach (DataGridViewRow gridRow in dataGridView1.Rows)
                {
                    foreach (DataGridViewCell cell in gridRow.Cells)
                    {
                        if (colorDictionary.Keys.Contains(cell.ColumnIndex))
                        {
                            // standard background 
                            cell.Style.BackColor = Color.FromArgb(194, 235, 211);
                        }
                    } …
Run Code Online (Sandbox Code Playgroud)

c# datagrid multithreading flicker winforms

5
推荐指数
3
解决办法
2万
查看次数

非常频繁地更新datagridview

我在合理的时间内用C#刷新DataGridView时遇到麻烦(我是btw的新手,我习惯于Java ...)。

我正在通过每秒20个数据包发送的网络获取数据。我想解析数据并将其放在DataGridView中。我还想将DataGridView的更新间隔从0.1秒调整为1分钟。

因此,我创建了一个额外的线程,该线程读取程序包并将其解析为数组。我还有一个计时器,可用于更改时间间隔。在每个计时器刻度上,我都将数据源重新分配给DataGridView。

有趣的是,当我这样做时,即使我将计时器设置为0.1秒,也只会每秒触发一次。如果我不刷新DataGridView,它会被每秒触发10次,如预期的那样。

因此,我假设我的更新DataGridView的方法太耗时。但是,我必须做些什么才能使其更加高效,因此我可以每秒更新10次而没有任何问题?

这是我使用的代码:

public MyForm()
    {
        InitializeComponent();

        timer = new System.Windows.Forms.Timer();
        timer.Interval = (1 * 1000); // 1 secs
        timer.Tick += new EventHandler(timer_Tick);
        timer.Start();

        readNetworkValues = true;
        networkReader = new Thread(() =>
        {
            Thread.CurrentThread.IsBackground = true;
            byte[] data = new byte[1024];
            IPEndPoint ipep = new IPEndPoint(IPAddress.Any, 49003);
            UdpClient newsock = new UdpClient(ipep);
            IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);

            while (readNetworkValues)
            {
                data = newsock.Receive(ref sender);
                dataSet = parseData(data); //Decrypts the data
            }
        newsock.Close();
        });
        networkReader.Start();
    } …
Run Code Online (Sandbox Code Playgroud)

c# datagridview

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

使用 C# 合并 DatagridView 中的多行标题

我有一个项目,我需要从数据库查看 Datagridview 中的数据,它应该看起来像甘特图。

我想让 Datagridview 看起来像这样:

数据网格视图示例

我已经尝试了很多来自互联网的代码,但没有一个能正常工作

例如这个: https: //social.msdn.microsoft.com/Forums/windows/en-US/87004d70-482a-4b86-ba18-371670254b6a/how-to-merge-headers-in-a-datagridview ?forum =winforms数据控件

我也不知道如何将日期值放入单元格/行标题中

这就是我如何获取一个月中的天数

int year = DateTime.Now.Year;
int Jan = 1;
int daysInJan = System.DateTime.DaysInMonth(year, Jan);
Run Code Online (Sandbox Code Playgroud)

c# merge datagridview winforms

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

标签 统计

c# ×4

winforms ×3

datagridview ×2

.net ×1

datagrid ×1

flicker ×1

merge ×1

multithreading ×1