none
如何实现当listbox不为空时激活按钮? RRS feed

  • 问题

  • 如题,当listbox有项目,就使某按钮.enable=true;若无项目,就使该按钮灰显。

    关键是我不知道该写在listbox的何种事件中。还请大大们支招,感谢万分!

    2011年10月11日 6:15

答案

  • 如题,当listbox有项目,就使某按钮.enable=true;若无项目,就使该按钮灰显。

    关键是我不知道该写在listbox的何种事件中。还请大大们支招,感谢万分!


    你好,如果你的ListBox是WinForm的,那么请:

    1)把listBox的DrawMode设置为OwnerDrawVariable。

    2)重写Draw_Item等事件——

    namespace WinFormCSharp
    {
       

        public partial class Form1 : Form
        {


            public Form1()
            {
                InitializeComponent();
            }

            private void Form1_Load(object senderEventArgs e)
            {
                //先加载数据,按钮自动变成可用
                listBox1.Items.Add("aa");
                //清除所有数据,按钮自动不可用
                listBox1.Items.Clear();
            }

            private void listBox1_DrawItem(object senderDrawItemEventArgs e)
            {
                if (e.Index > 0)
                { 
                e.Graphics.DrawString(listBox1.Items[e.Index].ToString(), e.FontBrushes.Blacke.Bounds);
                }
                button1.Enabled = listBox1.Items.Count > 0;
            }   

        }
    }

    如果你有其它意见或私下交流,请直接发送maledong_work@foxmail.com;或者讨论(Talk)
    If you do not have QQ, please open the page and download it and click the image to talk or leave message for me.
    下载MSDN桌面工具(Vista,Win7)
    下载Technet桌面小工具(Vista,Win7)
    慈善点击,点击此处
    2011年10月11日 8:50
    版主

全部回复

  • 如题,当listbox有项目,就使某按钮.enable=true;若无项目,就使该按钮灰显。

    关键是我不知道该写在listbox的何种事件中。还请大大们支招,感谢万分!


    你好,如果你的ListBox是WinForm的,那么请:

    1)把listBox的DrawMode设置为OwnerDrawVariable。

    2)重写Draw_Item等事件——

    namespace WinFormCSharp
    {
       

        public partial class Form1 : Form
        {


            public Form1()
            {
                InitializeComponent();
            }

            private void Form1_Load(object senderEventArgs e)
            {
                //先加载数据,按钮自动变成可用
                listBox1.Items.Add("aa");
                //清除所有数据,按钮自动不可用
                listBox1.Items.Clear();
            }

            private void listBox1_DrawItem(object senderDrawItemEventArgs e)
            {
                if (e.Index > 0)
                { 
                e.Graphics.DrawString(listBox1.Items[e.Index].ToString(), e.FontBrushes.Blacke.Bounds);
                }
                button1.Enabled = listBox1.Items.Count > 0;
            }   

        }
    }

    如果你有其它意见或私下交流,请直接发送maledong_work@foxmail.com;或者讨论(Talk)
    If you do not have QQ, please open the page and download it and click the image to talk or leave message for me.
    下载MSDN桌面工具(Vista,Win7)
    下载Technet桌面小工具(Vista,Win7)
    慈善点击,点击此处
    2011年10月11日 8:50
    版主
  • Hi ahdung_AI,
    欢迎来到MSDN论坛!

    根据Wei_Dong 提供的方案,您的问题处理的怎么样了呢?

    注意:仅当 ListBox 的 DrawMode 属性设置为 DrawMode.OwnerDrawFixed  DrawMode.OwnerDrawVariable 时,
    才引发 ListBox.DrawItem 事件。

    请参考以下链接:
    ListBox.DrawItem 事件
    http://msdn.microsoft.com/zh-cn/library/system.windows.forms.listbox.drawitem.aspx

    祝,一切顺利!


    Yoyo Jiang[MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年10月12日 9:59
    版主