当前位置:编程学习 > C#/ASP.NET >>

combox和panel的使用

在我的combox下拉选项中有三角形,正方形等。我现在是想选中其中一个,例如:我在combox中选中“三角形”,然后在panel上就会出现一个三角形,然后我按键盘上的上下左右键,这个三角形也会随之上下左右的移动。请高手们不惜帮我写一下实现这些功能的代码。非常感谢!(在winform下的) --------------------编程问答-------------------- 这功能很简单嘛,主要是肯定只会在panel出现一个图形,不会出现两个。只不过有点麻烦,需要先画好三角形,正方形,做成控件,以控件形式添加到panel里显示,然后只要处理键盘事件就可以达到效果了。 --------------------编程问答-------------------- 用一个控件显示图形,触发键盘事件,判断上下左右键就可以了 --------------------编程问答--------------------
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Drawing2D;

namespace WindowsApplication162
{
    public partial class Form1 : Form
    {
        Panel Shape = new Panel();
        Panel P = new Panel();

        public Form1()
        {
            InitializeComponent();

            ComboBox CB = new ComboBox();
            CB.Parent = this;
            CB.Items.AddRange(new Object[] { "三角形", "正方形" });
            CB.SelectedIndexChanged += new EventHandler(CB_SelectedIndexChanged);
            CB.DropDownStyle = ComboBoxStyle.DropDownList;

            P.Parent = this;
            P.Location = new Point(0, 20);
            this.KeyDown += new KeyEventHandler(Form1_KeyDown);
            this.KeyPreview = true;
            CB.KeyDown += new KeyEventHandler(CB_KeyDown);
        }

        void CB_KeyDown(object sender, KeyEventArgs e)
        {
            e.SuppressKeyPress = true; // 防止联动,只允许鼠标选择ComboBox
        }

        void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            switch (e.KeyCode)
            {
                case Keys.Up: Shape.Top--; break;
                case Keys.Down: Shape.Top++; break;
                case Keys.Left: Shape.Left--; break;
                case Keys.Right: Shape.Left++; break;
            }
        }

        void CB_SelectedIndexChanged(object sender, EventArgs e)
        {
            ComboBox CB = (ComboBox)sender;
            GraphicsPath GP = new GraphicsPath();

            switch (CB.SelectedIndex)
            {
                case 0:
                    GP.AddLine(0, 60, 30, 0);
                    GP.AddLine(30, 0, 60, 60);
                    GP.AddLine(60, 60, 0, 60);
                    break;
                case 1:
                    GP.AddRectangle(new Rectangle(0, 0, 60, 60));
                    break;
            }

            Shape.Parent = P;
            Shape.BackColor = Color.Red;
            Shape.Region = new Region(GP);
        }
    }
}
--------------------编程问答-------------------- 画三角形等几何图形比较麻烦,用图片代替。再判断键盘事件,改变图片在panel中的位置就可以。 --------------------编程问答-------------------- #3楼:
     你给我的东西我看了,不错能运行,但是有一个小毛病,就是我一直按住下键,图形会一直忘下移但是图形还会逐渐变小,这是怎么回事呀?
     还有,你能不能把你的代码注释一下呀,这样我读起来会更容易一些,因为我现在还是一个菜鸟,请见谅! 
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,