当前位置:  开发笔记 > 编程语言 > 正文

使用户控件显示在窗体边界之外

如何解决《使用户控件显示在窗体边界之外》经验,为你挑选了1个好方法。

我决定重新实现日期时间选择器,因为标准的日期时间选择器不可为空.用户想要以空白字段开头并键入(而不是选择)日期.

我已经创建了一个用户控件来做这件事,但是如果用户控件靠近表单的边缘,它将在表单边界上被切断.标准日期时间选择器不会遇到此问题.

这是一张显示问题的图片.我的用户控件在左侧,标准的datetimepicker在右侧:

替代文字http://img50.imageshack.us/img50/9104/datetimepickervu6.jpg

如您所见,标准控件将显示在表单和应用程序边界上.如何让我的控制中的月份选择器做同样的事情?

谢谢!



1> Jesper Palm..:

ToolStripDropDown控件具有此功能,因此通过继承它,我们可以创建一个简单的PopupWindow.

/// 
/// A simple popup window that can host any System.Windows.Forms.Control
/// 
public class PopupWindow : System.Windows.Forms.ToolStripDropDown
{
    private System.Windows.Forms.Control _content;
    private System.Windows.Forms.ToolStripControlHost _host;

    public PopupWindow(System.Windows.Forms.Control content)
    {
        //Basic setup...
        this.AutoSize = false;
        this.DoubleBuffered = true;
        this.ResizeRedraw = true;

        this._content = content;
        this._host = new System.Windows.Forms.ToolStripControlHost(content);

        //Positioning and Sizing
        this.MinimumSize = content.MinimumSize;
        this.MaximumSize = content.Size;
        this.Size = content.Size;
        content.Location = Point.Empty;

        //Add the host to the list
        this.Items.Add(this._host);
    }
}

用法:

PopupWindow popup = new PopupWindow(MyControlToHost);
popup.Show(new Point(100,100));
...
popup.Close();


我搞定了.无论如何要移除边界?
我已经实现了这个代码,但弹出窗口一直在窃取焦点.有办法防止这种情况吗?
推荐阅读
夏晶阳--艺术
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有