C#中窗体在本程序中最前显示,而不是显示在所有窗体之前,就像记事本中的查找一样。

解决方案 »

  1.   

    用ShowDialog(),但是调用它的窗体就不能用了。我要像记事本的查找功能一样,必须两个窗体可以切换的使用,而不需要关掉任意一个窗体
      

  2.   

    topMostForm.TopMost = true;见MSDN中获取或设置一个值,指示该窗体是否应显示为最顶层窗体。命名空间:  System.Windows.Forms
    程序集:  System.Windows.Forms(在 System.Windows.Forms.dll 中)语法
     
    C# 
    public bool TopMost { get; set; }
     
    Visual C++ 
    public:
    property bool TopMost {
    bool get ();
    void set (bool value);
    }
     
    属性值
    类型:System..::.Boolean如果将窗体显示为最顶层窗体,则为 true;否则为 false。默认为 false。备注
    最顶层窗体是重叠所有其他窗体(非最顶层窗体)的窗体,即使该窗体不是活动窗体或前台窗体。最顶层窗体始终显示在桌面上 Z 顺序窗口的最高点。可以使用此属性创建在应用程序中始终显示的窗体,如“查找和替换”工具窗口。示例
    下面的代码示例演示如何创建最顶层的窗体。该示例创建两个窗体,一个是最大化窗体,另一个将显示为最顶层窗体。第一个窗体 bottomForm 使用 WindowState 属性进行最大化显示,以更好地演示最顶层窗体的功能。第二个窗体 topMostForm 将 TopMost 属性设置为 true,以将该窗体显示为最顶层窗体。当这段代码运行时,单击最大化窗体不会导致最顶层窗体显示在最大化窗体的下面。该示例要求从另一个窗体调用在该示例中定义的方法。C#  复制代码 
    private void CreateMyTopMostForm()
    {
       // Create lower form to display.
       Form bottomForm = new Form();
       // Display the lower form Maximized to demonstrate effect of TopMost property.
       bottomForm.WindowState = FormWindowState.Maximized;
       // Display the bottom form.
       bottomForm.Show();
       // Create the top most form.
       Form topMostForm = new Form();
       // Set the size of the form larger than the default size.
       topMostForm.Size = new Size(300,300);
       // Set the position of the top most form to center of screen.
       topMostForm.StartPosition = FormStartPosition.CenterScreen;
       // Display the form as top most form.
       topMostForm.TopMost = true;
       topMostForm.Show();

      

  3.   

    用TopMost,会显示在所有窗体之前,而我只需要在本程序中它显示在最前面
    是应该用Show,但它不是我要解决的问题。
    我的问题就像记事本中的查找功能一样,当我选中记事本的时候,查找窗体必须还要显示。
    你们打开记事本的查找功能看看,就知道我的问题了。
    我用了api的SetWindowPos,通过时间控件来控制它,让他每隔一段时间来显示在最前面,但还是达不到的我要求。
      

  4.   

     Form topForm = new Form();
                topForm.Size = new Size(300, 300);
                topForm.StartPosition = FormStartPosition.CenterScreen;
                //获取当前窗体的句柄。如果为当前窗体则氢TopMost设置为true
                //否则为false
                //我的窗体为“658424”你可以单步执行得到当前窗体句柄
               if( this.Handle.ToInt32()==658424)
                   topForm.TopMost = true;
                   topForm.Show();
      

  5.   

    FrmFind frmFind=new FrmFind();
    frmFind.Parent=mainFrm;
    frmFind.Show();手写代码,有错误请见谅,但原理是通的
    将Find窗体的父窗体设为主窗体
      

  6.   

    修正了一下我楼上的回答:FrmFind frmFind=new FrmFind(); 
    frmFind.Owner=mainFrm; 
    frmFind.Show();