码迷,mamicode.com
首页 > 其他好文 > 详细

RadioButton Control

时间:2014-08-11 23:50:43      阅读:272      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   使用   os   io   for   

 

RadiobuttonFive usage:

bubuko.com,布布扣
DataTable table = new DataTable();
            table.TableName = "Parent";

            table.Columns.Add("Index_Code", typeof(string));
            table.Columns.Add("Index_Item_Name", typeof(string));
            table.Columns.Add("Index_Item_Value", typeof(decimal));
            table.Columns.Add("Score", typeof(decimal));


            table.Rows.Add("11", "How are you?", 10, 0);
            table.Rows.Add("11", "What is your favor?", 10, 0);


            FlowLayoutPanel flp = new FlowLayoutPanel();
            this.Controls.Add(flp);

            flp.Width = 800;
            int c = 1;
            foreach (DataRow item in table.Rows)
            {
                decimal d1 = (decimal)item["Index_Item_Value"];
                decimal d2 = (decimal)item["Score"];
                RadioButtonFive rb = new RadioButtonFive(c, item["Index_Code"].ToString(), item["Index_Item_Name"].ToString(), d1, d2, 200);
                rb.AnswerTypes = 3;
                rb.Col2Width = 300;
                rb.AllowDataChanged = true;

                rb.Refresh();


                flp.Controls.Add(rb);
                rb.ProperAnswerType();


            }
View Code

 

RadioButtonFive user control

Code

bubuko.com,布布扣
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WFControlLibrary
{
    public partial class RadioButtonFive : UserControl
    {
        public event EventHandler Clicked;

        public int RowNumber = 0;
        public int Value { get; set; }

        public int AnswerTypes { get; set; } // 1 = Five; 2 = Two; 3 = Two Numbers

        [Bindable(true)]
        public int SerialNo { get; set; }
        [Bindable(true)]
        public string ItemCode { get; set; }
        [Bindable(true)]
        public string Question { get; set; }
        [Bindable(true)]
        public decimal AssignedValue { get; set; }
        [Bindable(true)]
        public decimal Score { get; set; }

        public decimal NumberAInput { get; set; }
        public decimal NumberBInput { get; set; }

        [Bindable(true)]
        public bool AllowDataChanged { get; set; }

        public int Col1Width { get; set; }
        public int Col2Width { get; set; }
        public int Col3Width { get; set; }
        public int Col4Width { get; set; }
        public int Col5Width { get; set; }


        TextBox NumberA = new TextBox();
        TextBox NumberB = new TextBox();
        ErrorProvider errorProvider;


        public RadioButtonFive()
        {
            InitializeComponent();

            //tableLayoutPanel1.co
            tableLayoutPanel1.BackColor = Color.LightPink;


            if (RowNumber % 2 == 0)
            {
                //tableLayoutPanel1.BackColor = new Color(
            }

        }

        public RadioButtonFive(int aSerialNo, string itemCode, string aQuestion, decimal aValue, decimal aScore, int questionWidth)
        {
            InitializeComponent();

            this.SerialNo = aSerialNo;
            this.ItemCode = itemCode;
            this.Question = aQuestion;
            this.AssignedValue = aValue;
            this.Score = aScore;

            lbSerialNo.Text = SerialNo.ToString();
            lbQuestion.Text = Question;
            lbValue.Text = AssignedValue.ToString();
            lbScore.Text = Score.ToString();
            Col2Width = questionWidth;

            errorProvider = new ErrorProvider();

            if (aSerialNo % 2 == 0)
            {
                tableLayoutPanel1.BackColor = Color.Beige;
            }

        }

        public RadioButtonFive(int aSerialNo, string itemCode, string aQuestion, decimal aValue, decimal aScore, int questionWidth, int type)
        {
            InitializeComponent();

            this.SerialNo = aSerialNo;
            this.ItemCode = itemCode;
            this.Question = aQuestion;
            this.AssignedValue = aValue;
            this.Score = aScore;

            lbSerialNo.Text = SerialNo.ToString();
            lbQuestion.Text = Question;
            lbValue.Text = AssignedValue.ToString();
            lbScore.Text = Score.ToString();
            Col2Width = questionWidth;

            errorProvider = new ErrorProvider();

            if (aSerialNo % 2 == 0)
            {
                tableLayoutPanel1.BackColor = Color.Beige;
            }

        }


        public new void Refresh()
        {
            lbSerialNo.Text = SerialNo.ToString();
            lbQuestion.Text = Question;
            lbValue.Text = AssignedValue.ToString();
            lbScore.Text = Score.ToString();
            tableLayoutPanel1.ColumnStyles[1].SizeType = SizeType.Absolute;
            tableLayoutPanel1.ColumnStyles[1].Width = Col2Width;

            if (AnswerTypes == 1)
            {
                if (Score > 0.0001m)
                {
                    int x = (int)Math.Round(((4 * Score) / AssignedValue));

                    if (x == 4)
                    {
                        rbA.Checked = true;
                    }
                    else if (x == 3)
                    {
                        rbB.Checked = true;
                    }
                    else if (x == 2)
                    {
                        rbC.Checked = true;
                    }
                    else if (x == 1)
                    {
                        rbD.Checked = true;
                    }
                    else
                    {
                        rbE.Checked = true;
                    }
                }

                if (AllowDataChanged == false)
                {
                    rbA.Enabled = false;
                    rbB.Enabled = false;
                    rbC.Enabled = false;
                    rbD.Enabled = false;
                    rbE.Enabled = false;
                }
            }
            if (AnswerTypes == 2)
            {
                if (Score > 0.0001m)
                {
                    int x = (int)Math.Round((Score / AssignedValue));

                    if (x == 1)
                    {
                        rbA.Checked = true;
                    }
                    else
                    {
                        rbB.Checked = true;
                    }
                }

                if (AllowDataChanged == false)
                {
                    rbA.Enabled = false;
                    rbB.Enabled = false;
                }
            }

            if (AnswerTypes == 3)
            {
                NumberA.Text = NumberAInput.ToString();
                NumberB.Text = NumberBInput.ToString();
                if (AllowDataChanged == false)
                {
                    NumberA.Enabled = false;
                    NumberB.Enabled = false;
                }
            }

            


        }

        private void rbA_CheckedChanged(object sender, EventArgs e)
        {
            if (AnswerTypes == 1)
            {
                if (rbA.Checked)
                {
                    Value = 4;
                }
                if (rbB.Checked)
                {
                    Value = 3;
                }
                if (rbC.Checked)
                {
                    Value = 2;
                }
                if (rbD.Checked)
                {
                    Value = 1;
                }
                if (rbE.Checked)
                {
                    Value = 0;
                }

                Score = Value * AssignedValue / 4;

                lbScore.Text = Score.ToString();
            }

            if (AnswerTypes == 2)
            {
                if (rbA.Checked)
                {
                    Value = 1;
                }
                if (rbB.Checked)
                {
                    Value = 0;
                }

                Score = Value * AssignedValue;

                lbScore.Text = Score.ToString();
            }

            if (Value == 0)
            {
                tableLayoutPanel1.BackColor = Color.LightPink;
            }
            else
            {
                tableLayoutPanel1.BackColor = Color.LawnGreen;
            }

            Clicked(sender, e);
        }

        private void tableLayoutPanel1_Paint(object sender, PaintEventArgs e)
        {

        }

        private void RadioButtonFive_Load(object sender, EventArgs e)
        {

        }


        public void ProperAnswerType()
        {
            if (AnswerTypes == 1) //default
            {
                return;
            }

            if (AnswerTypes == 2) // two answer => modify answers
            {
                rbC.Visible = false;
                rbD.Visible = false;
                rbE.Visible = false;
                rbC.Enabled = false;
                rbD.Enabled = false;
                rbE.Enabled = false;

                rbA.Text = "Choosed";
                rbB.Text = "Unchoosed";

                TableLayoutColumnStyleCollection styles = tableFlowLayoutPanelAnswer.ColumnStyles;

                if (styles.Count == 5)
                {
                    styles[0].Width = 84;
                    styles[1].Width = 84;
                    styles[2].Width = 0;
                    styles[3].Width = 0;
                    styles[4].Width = 0;
                }

                TableLayoutColumnStyleCollection styles2 = tableLayoutPanel1.ColumnStyles;
                styles2[3].Width = 170;
            }

            if (AnswerTypes == 3) // numbers
            {
                rbA.Visible = false;
                rbB.Visible = false;
                rbC.Visible = false;
                rbD.Visible = false;
                rbE.Visible = false;
                rbA.Enabled = false;
                rbB.Enabled = false;
                rbC.Enabled = false;
                rbD.Enabled = false;
                rbE.Enabled = false;

                NumberA.Validated += NumberA_Validated;
                NumberB.Validated += NumberB_Validated;


                NumberA.Width = 60;
                NumberB.Width = 60;

                TableLayoutColumnStyleCollection styles = tableFlowLayoutPanelAnswer.ColumnStyles;
                if (styles.Count == 5)
                {
                    styles[0].Width = 84;
                    styles[1].Width = 84;
                    styles[2].Width = 0;
                    styles[3].Width = 0;
                    styles[4].Width = 0;
                }
                tableFlowLayoutPanelAnswer.Controls.Clear();
                tableFlowLayoutPanelAnswer.Controls.Add(NumberA, 0, 0);

                //NumberB.Dock = DockStyle.Right;
                tableFlowLayoutPanelAnswer.Controls.Add(NumberB, 1, 0);
                



                TableLayoutColumnStyleCollection styles2 = tableLayoutPanel1.ColumnStyles;
                styles2[3].Width = 170;

                NumberB.Invalidate();
            }

        }

        void NumberA_Validated(object sender, EventArgs e)
        {
            decimal tmp;
            if (decimal.TryParse(NumberA.Text.ToString(), out tmp))
            {
                if (tmp < 0 || tmp > 100)
                {
                    NumberAInput = tmp;
                    errorProvider.SetError(NumberA, "number is out of range");
                }
                else
                {
                    NumberAInput = tmp;
                    errorProvider.SetError(NumberA, "");
                }
            }
            else
            {
                NumberAInput = 0;
                errorProvider.SetError(NumberA, "Not a number");
            }

        }

        void NumberB_Validated(object sender, EventArgs e)
        {
            decimal tmp;
            if (decimal.TryParse(NumberB.Text.ToString(), out tmp))
            {
                if (tmp < 0 || tmp > 100)
                {
                    NumberBInput = tmp;
                    errorProvider.SetError(NumberB, "number is out of range");
                }
                else
                {
                    NumberBInput = tmp;
                    errorProvider.SetError(NumberB, "");
                }
            }
            else
            {
                NumberBInput = 0;
                errorProvider.SetError(NumberB, "Not a number");
            }
        }

    }
}
View Code

UI

bubuko.com,布布扣
namespace WFControlLibrary
{
    partial class RadioButtonFive
    {
        /// <summary>
        /// 必需的设计器变量。
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        /// 清理所有正在使用的资源。
        /// </summary>
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region 组件设计器生成的代码

        /// <summary>
        /// 设计器支持所需的方法 - 不要
        /// 使用代码编辑器修改此方法的内容。
        /// </summary>
        private void InitializeComponent()
        {
            this.rbA = new System.Windows.Forms.RadioButton();
            this.rbB = new System.Windows.Forms.RadioButton();
            this.rbC = new System.Windows.Forms.RadioButton();
            this.rbD = new System.Windows.Forms.RadioButton();
            this.rbE = new System.Windows.Forms.RadioButton();
            this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
            this.lbScore = new System.Windows.Forms.Label();
            this.lbValue = new System.Windows.Forms.Label();
            this.lbQuestion = new System.Windows.Forms.Label();
            this.tableFlowLayoutPanelAnswer = new System.Windows.Forms.TableLayoutPanel();
            this.lbSerialNo = new System.Windows.Forms.Label();
            this.tableLayoutPanel1.SuspendLayout();
            this.tableFlowLayoutPanelAnswer.SuspendLayout();
            this.SuspendLayout();
            // 
            // rbA
            // 
            this.rbA.AutoSize = true;
            this.rbA.Location = new System.Drawing.Point(3, 3);
            this.rbA.Name = "rbA";
            this.rbA.Size = new System.Drawing.Size(32, 17);
            this.rbA.TabIndex = 0;
            this.rbA.Text = "A";
            this.rbA.UseVisualStyleBackColor = true;
            this.rbA.CheckedChanged += new System.EventHandler(this.rbA_CheckedChanged);
            // 
            // rbB
            // 
            this.rbB.AutoSize = true;
            this.rbB.Location = new System.Drawing.Point(43, 3);
            this.rbB.Name = "rbB";
            this.rbB.Size = new System.Drawing.Size(32, 17);
            this.rbB.TabIndex = 1;
            this.rbB.Text = "B";
            this.rbB.UseVisualStyleBackColor = true;
            this.rbB.CheckedChanged += new System.EventHandler(this.rbA_CheckedChanged);
            // 
            // rbC
            // 
            this.rbC.AutoSize = true;
            this.rbC.Location = new System.Drawing.Point(83, 3);
            this.rbC.Name = "rbC";
            this.rbC.Size = new System.Drawing.Size(32, 17);
            this.rbC.TabIndex = 2;
            this.rbC.Text = "C";
            this.rbC.UseVisualStyleBackColor = true;
            this.rbC.CheckedChanged += new System.EventHandler(this.rbA_CheckedChanged);
            // 
            // rbD
            // 
            this.rbD.AutoSize = true;
            this.rbD.Location = new System.Drawing.Point(123, 3);
            this.rbD.Name = "rbD";
            this.rbD.Size = new System.Drawing.Size(33, 17);
            this.rbD.TabIndex = 3;
            this.rbD.Text = "D";
            this.rbD.UseVisualStyleBackColor = true;
            this.rbD.CheckedChanged += new System.EventHandler(this.rbA_CheckedChanged);
            // 
            // rbE
            // 
            this.rbE.AutoSize = true;
            this.rbE.Checked = true;
            this.rbE.Location = new System.Drawing.Point(163, 3);
            this.rbE.Name = "rbE";
            this.rbE.Size = new System.Drawing.Size(61, 17);
            this.rbE.TabIndex = 4;
            this.rbE.TabStop = true;
            this.rbE.Text = "未回答";
            this.rbE.UseVisualStyleBackColor = true;
            this.rbE.CheckedChanged += new System.EventHandler(this.rbA_CheckedChanged);
            // 
            // tableLayoutPanel1
            // 
            this.tableLayoutPanel1.AutoSize = true;
            this.tableLayoutPanel1.BackColor = System.Drawing.SystemColors.InactiveCaption;
            this.tableLayoutPanel1.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.Single;
            this.tableLayoutPanel1.ColumnCount = 5;
            this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 40F));
            this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
            this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 60F));
            this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 229F));
            this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 90F));
            this.tableLayoutPanel1.Controls.Add(this.lbScore, 4, 0);
            this.tableLayoutPanel1.Controls.Add(this.lbValue, 2, 0);
            this.tableLayoutPanel1.Controls.Add(this.lbQuestion, 1, 0);
            this.tableLayoutPanel1.Controls.Add(this.tableFlowLayoutPanelAnswer, 3, 0);
            this.tableLayoutPanel1.Controls.Add(this.lbSerialNo, 0, 0);
            this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Left;
            this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0);
            this.tableLayoutPanel1.Name = "tableLayoutPanel1";
            this.tableLayoutPanel1.RowCount = 1;
            this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
            this.tableLayoutPanel1.Size = new System.Drawing.Size(466, 44);
            this.tableLayoutPanel1.TabIndex = 5;
            this.tableLayoutPanel1.Paint += new System.Windows.Forms.PaintEventHandler(this.tableLayoutPanel1_Paint);
            // 
            // lbScore
            // 
            this.lbScore.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
            | System.Windows.Forms.AnchorStyles.Left) 
            | System.Windows.Forms.AnchorStyles.Right)));
            this.lbScore.AutoSize = true;
            this.lbScore.Location = new System.Drawing.Point(378, 1);
            this.lbScore.Name = "lbScore";
            this.lbScore.Size = new System.Drawing.Size(84, 42);
            this.lbScore.TabIndex = 9;
            this.lbScore.Text = "label4";
            this.lbScore.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
            // 
            // lbValue
            // 
            this.lbValue.Dock = System.Windows.Forms.DockStyle.Fill;
            this.lbValue.Location = new System.Drawing.Point(87, 1);
            this.lbValue.Name = "lbValue";
            this.lbValue.Size = new System.Drawing.Size(54, 42);
            this.lbValue.TabIndex = 8;
            this.lbValue.Text = "label3";
            this.lbValue.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
            // 
            // lbQuestion
            // 
            this.lbQuestion.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
            | System.Windows.Forms.AnchorStyles.Left) 
            | System.Windows.Forms.AnchorStyles.Right)));
            this.lbQuestion.AutoSize = true;
            this.lbQuestion.Location = new System.Drawing.Point(45, 1);
            this.lbQuestion.Name = "lbQuestion";
            this.lbQuestion.Size = new System.Drawing.Size(35, 42);
            this.lbQuestion.TabIndex = 7;
            this.lbQuestion.Text = "label2";
            this.lbQuestion.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
            // 
            // tableFlowLayoutPanelAnswer
            // 
            this.tableFlowLayoutPanelAnswer.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
            | System.Windows.Forms.AnchorStyles.Left) 
            | System.Windows.Forms.AnchorStyles.Right)));
            this.tableFlowLayoutPanelAnswer.ColumnCount = 5;
            this.tableFlowLayoutPanelAnswer.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 40F));
            this.tableFlowLayoutPanelAnswer.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 40F));
            this.tableFlowLayoutPanelAnswer.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 40F));
            this.tableFlowLayoutPanelAnswer.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 40F));
            this.tableFlowLayoutPanelAnswer.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
            this.tableFlowLayoutPanelAnswer.Controls.Add(this.rbE, 4, 0);
            this.tableFlowLayoutPanelAnswer.Controls.Add(this.rbC, 2, 0);
            this.tableFlowLayoutPanelAnswer.Controls.Add(this.rbD, 3, 0);
            this.tableFlowLayoutPanelAnswer.Controls.Add(this.rbA, 0, 0);
            this.tableFlowLayoutPanelAnswer.Controls.Add(this.rbB, 1, 0);
            this.tableFlowLayoutPanelAnswer.Location = new System.Drawing.Point(148, 4);
            this.tableFlowLayoutPanelAnswer.Name = "tableFlowLayoutPanelAnswer";
            this.tableFlowLayoutPanelAnswer.RowCount = 1;
            this.tableFlowLayoutPanelAnswer.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
            this.tableFlowLayoutPanelAnswer.Size = new System.Drawing.Size(223, 36);
            this.tableFlowLayoutPanelAnswer.TabIndex = 5;
            // 
            // lbSerialNo
            // 
            this.lbSerialNo.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
            | System.Windows.Forms.AnchorStyles.Left) 
            | System.Windows.Forms.AnchorStyles.Right)));
            this.lbSerialNo.Location = new System.Drawing.Point(4, 1);
            this.lbSerialNo.Name = "lbSerialNo";
            this.lbSerialNo.Size = new System.Drawing.Size(34, 42);
            this.lbSerialNo.TabIndex = 6;
            this.lbSerialNo.Text = "lb1";
            this.lbSerialNo.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
            // 
            // RadioButtonFive
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.Controls.Add(this.tableLayoutPanel1);
            this.Margin = new System.Windows.Forms.Padding(0);
            this.Name = "RadioButtonFive";
            this.Size = new System.Drawing.Size(1077, 44);
            this.Load += new System.EventHandler(this.RadioButtonFive_Load);
            this.tableLayoutPanel1.ResumeLayout(false);
            this.tableLayoutPanel1.PerformLayout();
            this.tableFlowLayoutPanelAnswer.ResumeLayout(false);
            this.tableFlowLayoutPanelAnswer.PerformLayout();
            this.ResumeLayout(false);
            this.PerformLayout();

        }

        #endregion

        private System.Windows.Forms.RadioButton rbA;
        private System.Windows.Forms.RadioButton rbB;
        private System.Windows.Forms.RadioButton rbC;
        private System.Windows.Forms.RadioButton rbD;
        private System.Windows.Forms.RadioButton rbE;
        private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
        private System.Windows.Forms.Label lbScore;
        private System.Windows.Forms.Label lbValue;
        private System.Windows.Forms.Label lbQuestion;
        private System.Windows.Forms.TableLayoutPanel tableFlowLayoutPanelAnswer;
        private System.Windows.Forms.Label lbSerialNo;
    }
}
View Code

 

RadioButton Control,布布扣,bubuko.com

RadioButton Control

标签:style   blog   http   color   使用   os   io   for   

原文地址:http://www.cnblogs.com/kevinygq/p/3905606.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!