已有57人关注
第五十例子
发表在C#图书答疑 2019-05-15 悬赏:10 学分 《C#精彩编程200例》第1章 WinForm窗体开发
是否精华
版块置顶:

源程序:

image.png

我的程序为:

image.png

这个怎么解决?书上的程序没问题,我的也一样,就出错!

分享到:
精彩评论 2
小禾斗
学分:7338 LV13
TA的每日心情
奋斗
2017-04-21 14:00:25
2019-05-16
沙发

不是这页代码的问题,检查你自定义的DrawListBox控件有没有自定义这两个属性。

小飞侠
学分:358 LV5
2019-05-16
板凳

有,通不过?要是删掉了,就通过了。31行是我自己添加的,把错误删了,结果和书上的一样结果。

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Drawing;

using System.Data;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using System.Drawing.Drawing2D;


namespace BeautifulListBox2

{

    public partial class DrawListBox :ListBox

    {

        public DrawListBox()

        {

            InitializeComponent();

       

        

           this.DrawMode = DrawMode.OwnerDrawFixed;

            this.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.ListBox_DrawItem);


        }

        #region

        private static Brush[] listBoxBrushes;

        private static int place = -1;

        private static bool naught = true;

        #endregion

        private bool TGradualC = false;

        [Browsable(true), Category("控件的重绘设置"), Description("判断是否进行渐变色的设置")]

        public bool GradualC

        {

            get { return TGradualC; }

            set

            {

                TGradualC = value;

                this.Invalidate();

            }

        }

        private Color TColorSelect = Color.Gainsboro;

        [Browsable(true), Category("控件的重绘设置"), Description("项被选中后的高亮度颜色")]

        public Color ColorSelect

        {

            get { return TColorSelect; }

            set

            {

                TColorSelect = value;

                this.Invalidate();

            }

        }

        private Color TColor1 = Color.CornflowerBlue;

        [Browsable(true), Category("控件的重绘设置"), Description("第一个颜色的设置")]

        public Color Color1

        {

            get { return TColor1; }

            set

            {

                TColor1 = value;

                this.Invalidate();

            }

        }

        private Color TColor1Gradual = Color.Thistle;

        [Browsable(true), Category("控件的重绘设置"), Description("第一个颜色的渐变色设置")]

        public Color Color1Gradual

        {

            get { return TColor1Gradual; }

            set

            {

                TColor1Gradual = value;

                this.Invalidate();

            }

        }

        private Color TColor2 = Color.PaleGreen;

        [Browsable(true), Category("控件的重绘设置"), Description("第二个颜色的设置")]

        public Color Color2

        {

            get { return TColor2; }

            set

            {

                TColor2 = value;

                this.Invalidate();

            }

        }

        private Color TColor2Gradual = Color.DarkKhaki;

        [Browsable(true), Category("控件的重绘设置"), Description("第二个颜色的渐变色设置")]

        public Color Color2Gradual

        {

            get { return TColor2Gradual; }

            set

            {

                TColor2Gradual = value;

                this.Invalidate();

            }

        }

        private void ListBox_DrawItem(object sender, DrawItemEventArgs e)

        {

            Rectangle r = new Rectangle(0, 0, this.Width, this.Height);

            SolidBrush SolidB1 = new SolidBrush(Color.CornflowerBlue);

            SolidBrush SolidB2 = new SolidBrush(Color.PaleGreen);

            LinearGradientBrush LinearG1 = new LinearGradientBrush(r, Color.CornflowerBlue, this.Color1Gradual, LinearGradientMode.BackwardDiagonal);

            LinearGradientBrush LinearG2 = new LinearGradientBrush(r, this.Color2, this.Color2Gradual, LinearGradientMode.BackwardDiagonal);

            listBoxBrushes = new Brush[] { SolidB1, LinearG1, SolidB2, LinearG2 };

            e.DrawBackground();

            if (this.Items.Count <= 0)

                return;

            if (e.Index == (this.Items.Count - 1))

            {

                bool tem_bool = true;

                if (e.Index == 0 && tem_bool)

                    naught = false;

            }

            if (naught)

            {

                Brush brush = listBoxBrushes[place = (GradualC) ? (((e.Index % 2) == 0) ? 1 : 3) : (((e.Index % 2) == 0) ? 0 : 2)];

                e.Graphics.FillRectangle(brush, e.Bounds);

                bool selected = ((e.State & DrawItemState.Selected) == DrawItemState.Selected) ? true : false;

                if (selected)

                {

                    e.Graphics.FillRectangle(new SolidBrush(ColorSelect), e.Bounds);


                }

                e.Graphics.DrawString(this.Items[e.Index].ToString(), this.Font, Brushes.Black, e.Bounds);


            }

            e.DrawFocusRectangle();

        }

    }

}

    


首页上一页 1 下一页尾页 2 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照