选择combobox 导致 listbox listview 闪烁刷新的问题

妖怪啊 2016-08-22 06:45:14
如题,在同一个个form上添加一个combobox和一个listbox或者listview,
选择中listbox(或者listview),然后再选择combobox会导致listbox(或者listview)闪烁
分不多,求高手解决,
...全文
692 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
gengchenhui 2016-08-24
  • 打赏
  • 举报
回复
你不会是在选中的时候运行了什么代码吧?
xuzuning 2016-08-24
  • 打赏
  • 举报
回复
win10 要用 vs2015 编译 免费推送的 win10 就是一个坑
gengchenhui 2016-08-24
  • 打赏
  • 举报
回复
引用 18 楼 goodmouce 的回复:
[quote=引用 16 楼 gengchenhui 的回复:] 你不会是在选中的时候运行了什么代码吧?
没有运行任何代码,就是拖过来两个空间,然后填值[/quote] 那是你电脑本身显卡驱动问题?
妖怪啊 2016-08-24
  • 打赏
  • 举报
回复
引用 13 楼 xuzuning 的回复:
经测试,并不存在你说的问题
你应该在XP环境下,我在XP,WIN7下测试,也没有问题 看来还是Win10的问题
妖怪啊 2016-08-24
  • 打赏
  • 举报
回复
引用 16 楼 gengchenhui 的回复:
你不会是在选中的时候运行了什么代码吧?
没有运行任何代码,就是拖过来两个空间,然后填值
妖怪啊 2016-08-24
  • 打赏
  • 举报
回复
引用 14 楼 johnliuyuan 的回复:
你的framework是哪个版本?
2.0和4.5都试过Win10环境
妖怪啊 2016-08-23
  • 打赏
  • 举报
回复
引用 5 楼 hiose89 的回复:
重写就只有两句话就行了啊, 你GIF怎么做的?
录屏,然后导出成GIF啊
hiose89 2016-08-23
  • 打赏
  • 举报
回复
引用 2 楼 goodmouce 的回复:
[quote=引用 1 楼 hiose89 的回复:] 使用双缓冲,重写ListView
我就很简单的使用了一个listbox和combobox,这个还需要重写吗? 如果真这么复杂,我就要放弃使用其中之一了[/quote] 重写就只有两句话就行了啊, 你GIF怎么做的?
bigbaldy 2016-08-23
  • 打赏
  • 举报
回复
引用 3 楼 goodmouce 的回复:
我把问题现象做成gif 代码很简单,拖动控件,然后初始化列表

namespace TestFromApp
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            listBox1.Items.Add("12345");
            listBox1.Items.Add("12345");
            listBox1.Items.Add("12345");
            listBox1.Items.Add("12345");

            listView1.Items.Add("12345");
            listView1.Items.Add("12345");
            listView1.Items.Add("12345");
            listView1.Items.Add("12345");
            listView1.Items.Add("12345");
        }
    }
}
还真没注意这个问题,我也试试看
妖怪啊 2016-08-23
  • 打赏
  • 举报
回复
我把问题现象做成gif
代码很简单,拖动控件,然后初始化列表

namespace TestFromApp
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
listBox1.Items.Add("12345");
listBox1.Items.Add("12345");
listBox1.Items.Add("12345");
listBox1.Items.Add("12345");

listView1.Items.Add("12345");
listView1.Items.Add("12345");
listView1.Items.Add("12345");
listView1.Items.Add("12345");
listView1.Items.Add("12345");
}
}
}
妖怪啊 2016-08-23
  • 打赏
  • 举报
回复
引用 1 楼 hiose89 的回复:
使用双缓冲,重写ListView
我就很简单的使用了一个listbox和combobox,这个还需要重写吗? 如果真这么复杂,我就要放弃使用其中之一了
  • 打赏
  • 举报
回复
你自己开发一个 ComboBox 控件,不要使用 .net winform 的,就行了。
john_QQ:2335298917 2016-08-23
  • 打赏
  • 举报
回复
你的framework是哪个版本?
xuzuning 2016-08-23
  • 打赏
  • 举报
回复
经测试,并不存在你说的问题
hiose89 2016-08-23
  • 打赏
  • 举报
回复
引用 11 楼 goodmouce 的回复:
[quote=引用 10 楼 hiose89 的回复:]
你的方法是可以解决ListView的闪烁问题,但ListBox还是闪烁, 并且,为什么会闪烁呢[/quote] 这机制的问题吧, 一个是先在缓存区肯绘制 另一个是直接绘制在窗体上 。 ListBox闪 也是同样的办法。
妖怪啊 2016-08-23
  • 打赏
  • 举报
回复
引用 10 楼 hiose89 的回复:
你的方法是可以解决ListView的闪烁问题,但ListBox还是闪烁, 并且,为什么会闪烁呢
hiose89 2016-08-23
  • 打赏
  • 举报
回复
引用 9 楼 goodmouce 的回复:
[quote=引用 8 楼 hiose89 的回复:]
[quote=引用 7 楼 goodmouce 的回复:]
没有人遇到这个问题吗?人工置顶下

就我说的方法可以解决
[/quote]

怎么做到的?[/quote]

class ListviewNew : System.Windows.Forms.ListView//键一个类继承
{
public ListviewNew()
{
// 开启双缓冲
this.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint, true);
this.SetStyle(ControlStyles.EnableNotifyMessage, true);
}

protected override void OnNotifyMessage(Message m)
{
if (m.Msg != 0x14)
{
base.OnNotifyMessage(m);
}
}
}

然后再改这里
妖怪啊 2016-08-23
  • 打赏
  • 举报
回复
引用 8 楼 hiose89 的回复:
[quote=引用 7 楼 goodmouce 的回复:] 没有人遇到这个问题吗?人工置顶下
就我说的方法可以解决 [/quote] 怎么做到的?
hiose89 2016-08-23
  • 打赏
  • 举报
回复
引用 7 楼 goodmouce 的回复:
没有人遇到这个问题吗?人工置顶下

就我说的方法可以解决
妖怪啊 2016-08-23
  • 打赏
  • 举报
回复
没有人遇到这个问题吗?人工置顶下
加载更多回复(1)

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧