用region做,在一张WINFORM中选择要显示的区域

解决方案 »

  1.   

    这里有一个简单的例子,做的是一个圆形的窗体,但是步骤就是这样。http://www.omniscium.com/index.asp?page=DotNetCustomShapedForm
      

  2.   

    一下引自MSDN:
    创建一个作为窗体图面的位图。(一种有效的方式是,您可以从矩形中“裁剪掉”所需的窗体形状。) 
    创建 Windows 应用程序项目,将其属性设置为移除标题栏并使用位图作为窗体背景。 
    输入重新创建标题栏所提供功能的代码,例如移动和关闭窗体。 
    创建特定形状的窗体 创建一个非矩形的单色位图,其背景则使用另一种颜色。使用您喜欢的任何绘图程序。所绘制的形状最终将成为您的窗体,因此请确保该形状足够大,以满足使用的需求。 
    注意   请选择便于记忆的背景色,例如蓝色,因为这对于后面的操作是非常重要的。
    在“属性”窗口中: 
    将 FormBorderStyle 属性设置为 None。 
    此属性从窗体中移除标题栏。(它同时移除标题栏所提供的功能,包括关闭和移动窗体的能力。不过,以下代码中解决了这种不足。) 将窗体的 BackgroundImage 属性设置为先前创建的位图文件。不必将文件添加到项目系统中;这将在指定该文件作为背景图像时自动完成。 
    此属性将该位图图像设置为窗体的背景。(当与以下指定的 TransparencyKey 属性前后使用时,此属性将定义窗体的形状。) 将 TransparencyKey 属性设置为位图文件的背景色。 
    此属性告诉应用程序窗体中的哪些部分需要设置为透明。 注意   如果监视器的颜色深度设置大于 24 位,则不管 TransparencyKey 属性是如何设置的,窗体的非透明部分都会产生显示问题。若要避免出现这种问题,请确保“显示”控制面板中的监视器颜色深度的设置小于 24 位。当开发具有这种透明功能的应用程序时,请牢记应使您的用户意识到此问题。编写关闭窗体的代码:
    向窗体添加一个 Button 控件。有关更多信息,请参见向 Windows 窗体添加控件。 
    添加代码,使用户可通过调用 Close 方法关闭该窗体。 
    以下示例显示如何添加一个按钮,单击该按钮将关闭窗体。
    private void button1_Click(object sender, System.EventArgs e)
    {
       this.Close();
    }
    Visual C# 说明
    请确保添加了启用事件处理程序的代码。使用以下示例中的代码,它类似于以下内容:
    this.Button1.Click += new System.EventHandler(this.button1_Click);1.编写移动窗体的代码(可选) 创建一个在拖动窗体时使窗体移动的过程。输入类似于下文显示的代码来创建新的 Point 对象。这将作为计算如何移动窗体时的变量。isMouseDown 字段用于跟踪用户是否按下了鼠标按钮。该窗体应只在用户按下鼠标按钮时才移动。
    private Point mouseOffset;
    private bool isMouseDown = false;2.创建窗体的 MouseDown 事件的事件处理程序。在处理程序中添加代码,使用户可以在窗体上的任意位置单击以拖动窗体。有关创建事件处理程序的详细信息,请参见在 Windows 窗体设计器上创建事件处理程序。 
    输入类似于下文显示的代码,以根据鼠标指针的当前位置,将坐标分配给 mouseOffset 变量。在以下代码中,请注意偏移位置是使用有关边框大小 (FrameBorderSize.Width) 和标题栏高度 (CaptionHeight) 的系统信息进行计算的。在测试偏移位置时必须考虑这些因素,因为某些测量结果是使用工作区得出的,而另一些测量结果是使用屏幕坐标得出的。因此,偏移位置等于边框宽度加上标题高度,再加上窗体工作区的偏移位置。
      

  3.   

    private void Form1_MouseDown(object sender, 
        System.Windows.Forms.MouseEventArgs e)
    {
        int xOffset;
        int yOffset;    if (e.Button == MouseButtons.Left) 
        {
            xOffset = -e.X - SystemInformation.FrameBorderSize.Width;
            yOffset = -e.Y - SystemInformation.CaptionHeight - 
                SystemInformation.FrameBorderSize.Height;
            mouseOffset = new Point(xOffset, yOffset);
            isMouseDown = true;
        }    
    }
    Visual C# 说明   请确保添加了启用事件处理程序的代码。使用以下示例中的代码,它类似于以下内容:
    this.MouseDown += new
       System.Windows.Forms.MouseEventHandler
       (this.Form1_MouseDown);3.创建窗体的 MouseMove 事件的事件处理程序。 
    输入类似以下内容的代码。单击鼠标左键并且拖动鼠标时,窗体的 Location 属性将设置为新的位置。 
    private void Form1_MouseMove(object sender, 
        System.Windows.Forms.MouseEventArgs e)
    {
        if (isMouseDown) 
        {
            Point mousePos = Control.MousePosition;
            mousePos.Offset(mouseOffset.X, mouseOffset.Y);
            Location = mousePos;
        }
    }
    Visual C# 说明   请确保添加了启用事件处理程序的代码。使用以下示例中的代码,它类似于以下内容:
    this.MouseMove += new
       System.Windows.Forms.MouseEventHandler
       (this.Form1_MouseMove);4.创建窗体的 MouseUp 事件的事件处理程序。输入类似以下内容的代码。 
    private void Form1_MouseUp(object sender, 
        System.Windows.Forms.MouseEventArgs e)
    {
        // Changes the isMouseDown field so that the form does
        // not move unless the user is pressing the left mouse button.
        if (e.Button == MouseButtons.Left) 
        {
            isMouseDown = false;
        }
    }
    你要是还不明白,就自己去看MSDN吧。