C#如何在窗体form上写字设计,设计一个选择 如何在窗体form上写字 的如何在窗体form上写字select,但是编译时,先显示Form1,而不是先显示select如何在窗体form上写字。

千里之行 始于足下精诚所至 金石为开
欢迎加入我们,一同切磋技术。 &
用户名: &&&
密 码: &
共有 3841 人关注过本帖
标题:[求助]如何在子窗体中打开另一个窗体
等 级:新手上路
帖 子:82
&&问题点数:0&&回复次数:7&&&
[求助]如何在子窗体中打开另一个窗体
就是现在已有一个mainform窗体,设为MDI式的,在mainform中打开一个窗体1,现在在窗体1中有一个按钮,点击按钮,打开窗体2,但窗体2要显示在mainform中,为mainform的子窗体,也就是窗体1和2是等级的,都是mainform的MDI子窗体。不知道如何实现,恳请朋友指点,小弟不胜感激!
搜索更多相关主题的帖子:
等 级:新手上路
帖 子:111
可以先把主窗体传给子窗体,然后在子窗体里面当单击按钮时 this.再下一级窗体.MdiParent=传过来的主窗体 这样就能达到效果
等 级:新手上路
帖 子:124
怎么把主窗体传给子窗体
等 级:新手上路
帖 子:111
主界面创建一个实例 Form myForm=new Form(this)
子界面Form myF
&&&&&&&&public FrmSelect(Form paramForm)
&&&&&&&&&&&&myForm = paramF
&&&&&&&&&&&&InitializeComponent();
这样myForm 就相当于是主界面
等 级:新手上路
帖 子:124
这样可以实现
Form1 frm1 = new Form1();
frm1.MdiParent =
frm1.Show();
-------------------------------------------
Form2 frm2 = new Form2();
frm2.MdiParent = this.MdiP
frm2.Show();
等 级:新手上路
帖 子:124
谢谢2 L的。学习了
等 级:论坛游民
帖 子:732
专家分:94
hikor Wikor 你们是不是一个学校的啊
前程——漆黑如这落寞的夜,苦苦守望,却总也望不到那泛着点点苍白的黎明!期望与希冀!无奈与魂殇!
獨自壹個人,望著大海淚流.
愛情,不敢奢望...
等 级:业余侠客
帖 子:208
专家分:226
在Button_Click事件中写如下代码:
ChildForm form=new ChildForm(this);
form.MdiParent=
这个this你可以替换成ParentForm的Instance,也就是说你在ChildForm中定义一个ParentForm的属性
private ParentF
public ChildForm(ParentForm pf)
版权所有,并保留所有权利。
Powered by , Processed in 0.025432 second(s), 8 queries.
Copyright&, BCCN.NET, All Rights ReservedC# Winform程序 使用登录窗体到主窗体 且传登录信息
&&&&看到很多朋友在CSDN中发帖放分求“如何实现登录验证正确后弹出主窗体”的问题。关于这个问题的实现方法,一般很多人都是使用在登录窗体点击“登录”按钮后,通过后台数据验证正确后,把登录窗体隐藏,然后载入主窗体。还有一种做法是以上提问的这些人的一个不太对的一个实现办法(其实是无法实现的),他们的做法是点击“登录”按钮后,调用this.close()方法去把登录窗体关闭,然后实例化主窗体
&&&&&&&&&& frmMain dlg=new frmMain();
&&&&&&&&&& dlg.ShowDialog();
&&&&用以上代码想实现登录后加载主窗体,你可以发现,当点击“登录”按钮后,登录窗体确实是关闭了,然后程序加载主窗体,主窗体是一闪而过,随即又关闭了。这是为什么呢?其实,你调用登录窗体的关闭事件时,把进程给关了,frmMain和frmLogin窗体是同一个进程,所以就出现了以上的一闪而过的现象。
&&&&那么我们如何能够实现验证登录信息正确后加载主窗体呢?我的答案是通过验证返回参数去实现过程控制。
&&&&&&&& 在程序的类库里定义一个全局变量,如Bool& bLoginOk=
&&&&&&&& 此变量在未作登录时的初始值为false。
&&&&在项目中的Program.cs中,通过先加载frmLogin,点击登录窗体中的“登录”按钮后,在后台查询数据库验证合法性,如果合法,则把bLoginOk赋值true;否则赋值falsse。
&&&&在最后通过判断bLoginOk的值
&&&&&&&if(bLoginOk==true)
&&&&&&&&&& Application.run(frmMain);
&&&&&& else
&&&&&&&&& Application.Exit();
&&&&同样可以通过以上的方法实现验证数据库连接参数的准确性。
在 龙星 项目中 本人就使用到了&& 例子如下:
class Program
应用程序的主入口点。
&/summary&
8 [STAThread]
void Main()
11 Application.EnableVisualStyles();
12 Application.SetCompatibleTextRenderingDefault(
Application.Run(new Login());
15 System.Threading.Mutex mutex =
new System.Threading.Mutex(
ThisShouldOnlyRunOnce
bool Running = !mutex.WaitOne(
if (!Running
Application.Run(new Login());
20 Login login =
new Login();
if (System.Windows.Forms.DialogResult.Cancel == login.ShowDialog())
25 Main main =
new Main();
26 main.ShowDialog();
30 MessageBox.Show(
程序已启动!
class GlobalClass
struct User
string strUsrId;
string strUsrN
登录方法:
void CheckIn()
3 BaseData bd=
new BaseData();
string strSql =
Select * from [User] Where UserId='
& + bd.Replace(
this.txt_UserId.Text.Trim()) +
' And PassWord='
& + bd.Replace(
this.txt_PassWord.Text.Trim())+
5 DataSet ds =
new DataSet();
6 ds = SqlHelper.ExecuteDataset(strConn, CommandType.Text, strSql);
null && ds.Tables[
if (ds.Tables[
0].Rows.Count &
12 GlobalClass.user.strUsrId = ds.Tables[
&].ToString();
13 GlobalClass.user.strUsrName = ds.Tables[
&].ToString();
this.DialogResult = System.Windows.Forms.DialogResult.OK;
this.Close();
19 MessageBox.Show(
用户名或密码错误!
主要窗体使用:
&&& public partial class Main : Form
&&&&&&& public Main()
&&&&&&&&&&& InitializeComponent();
&&&&&&&&&&& this.label1.Text = GlobalClass.user.strUsrN
}原文链接:c#一个数据库能供多个窗体用吗
我用的是C#.NET2003版的,我建立了2个窗体并连接了数据库,通过了测试;然而我建立了第三个窗体后也连接数据库,却出现了这样的问题:第一个窗体和第三个窗体用了同一张数据表,第二个窗体用的是另外一张数据表,开始只有第一和第二个窗体的时候,测试通过;第三个的时候,测试却是第二个窗体提示“未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值”这个错误,这是为什么?请教高手指点,本人新手上路,谢谢各位大侠
09-05-08 &
C#作为Microsoft.Net战略下的新兴语言,有其不可比拟的强大功能。作为一种RAD语言,它有Visual Basic快速开发应用程序的优点,又不乏C++语言的面相对象的优良特性。目录选择对话框是应用程序中经常用到的。它能让用户选择一个系统中的特定的文件目录,在安装程序以及媒体播放器中有大量的运用。本文就从C#快速开发的特点出发,介绍在C#下如何制作应用程序中常用到的目录选择对话框。本文介绍的目录选择对话框是完全基于Windows Forms的,因此具有一些标准窗口所共有的特性。一、系统要求:    * 微软公司Windows 2000服务器版或Windows XP 版    * .Net Framework SDK Beta 2版二、实现方法1.在VS.net下新建一个C#的工程,不妨取名为&FolderSelect&,图示如下:2.接下来,我们开始界面部分的设计:   1. 先往主界面上添加一个按钮控件、两个标签控件、两个文本框控件(用于显示目录的完整路径以及目录的一些信息)。将按钮控件的 Text属性设置为&浏览目录选择对话框&,将两个标签控件的Text属性分别设置为&完整路径:&、&路径信息:&,将第二个文本框的 MultiLine属性设置为True。最终设计所得的界面如下:   2. 现在我们的主界面已经好了,接着就是完成目录选择对话框的设计。      选择VS.net的菜单:项目'添加Windows窗体,出现如下图形:      选择默认即可,按&打开&。      现在开始设计目录选择对话框的界面:      往窗体上添加两个标签控件、两个按钮控件、一个文本框控件、一个图象列表(ImageList)控件和一个目录树(TreeView)控件。将两个标签控件的的Text属性分别设置为&完整路径:&、&请选择一个文件夹:&;将两个按钮控件的Text属性分别设置为&选择&和&取消&;编辑图象列表控件:给它的Images属性添加两个图标 和 分别表示文件夹关闭和打开状态;将目录树控件的ImageList属性设置为imageList1,并将它的ImageIndex和SelectedImageIndex属性分别设置为0和1。好了,最终的界面如下:3.现在我们开始编写代码:因为我们的程序中均用到了有关目录信息的类,所以必须在每个代码文件的头上添加System.IO名字空间,具体如下:using System.IO;   1. 对于主窗体部分,我们要写的代码量相对较少。因为这是一个测试用的程序,所以主窗体的作用只是用来显示用户所选择的目录的一些相关信息以表明程序能正常运行、目录选择对话框能正常工作,所以只要添加主窗体上按钮的OnClick事件函数即可:      private void button1_Click(object sender, System.EventArgs e)      {      try      {      Form2 dlg = new Form2(); if ( dlg.ShowDialog() == DialogResult.OK)      {      DirectoryInfo info = ;      textBox1.Text = dlg.fullP      // 在文本框中添加目录信息      string [] strArray = new string[4];      strArray[0] = &创建时间 : &+ info.CreationTime.ToString();      strArray[1] = &全名 : &+ info.FullN      strArray[2] = &上次访问时间 : &+ info.LastAccessTime.ToString();      strArray[3] = &上次改写时间 : &+ info.LastWriteTime.ToString();      textBox2.Lines = strA      }      }      catch( Exception err)      {      Console.WriteLine(err.Message);      }      }   2. 对于文件选择对话框,我们要完成系统驱动器及其子目录的取得并显示、设定目录路径信息以及目录相关信息等工作,所以代码量相对较大。先给该类添加两个必须的私有数据成员如下:      private static string driveLetters = &ABCDEFGHIJKLMNOPQRSTUVWXYZ&;      // 用于列举驱动器盘符      private DirectoryI // 用于保存目录信息      修改类的构造函数如下:fillTree()函数在后面介绍      public Form2()      {      //      // Required for Windows Form Designer support      //      InitializeComponent();      //      // TODO: Add any constructor code after InitializeComponent call      //      fillTree();// 该函数调用完成目录选择对话框的初始设置      }      接着为该类添加几个有用的成员函数fillTree()、getSubDirs()、fixPath(),访问类型均为Private。 fillTree()函数用来设置目录树的各个节点以填充到目录树控件,这样目录树中就充满了系统中各个根目录以及其所有子目录的节点。 getSubDirs()函数用来获得各个目录节点可能存在的所有子节点,其中用到了递推搜索算法。fixPath()函数用来设置文本框的内容,使当前用户所选择的目录显示在文本框中。各函数如下:      private void fillTree()      {      DirectoryI      string sCurPath = &&; // 重新清空      treeView1.Nodes.Clear();      // 将硬盘上的所有的驱动器都列举出来      foreach( char c in driveLetters )      {      sCurPath = c + &:\\&;      try      {      // 获得该路径的目录信息      directory = new DirectoryInfo(sCurPath);      // 如果获得的目录信息正确,则将它添加到目录树视中      if ( directory.Exists == true )      {      TreeNode newNode = new TreeNode(directory.FullName);      treeView1.Nodes.Add(newNode); // 添加新的节点到根节点      getSubDirs(newNode);      // 调用getSubDirs()函数,检查该驱动器上的任何存在子目录      }      }      catch( Exception doh)      {      Console.WriteLine(doh.Message);      }      }      }      private void getSubDirs( TreeNode parent )      {      DirectoryI      try      {      // 如果还没有检查过这个文件夹,则检查之      if ( parent.Nodes.Count == 0 )      {      directory = new DirectoryInfo(parent.FullPath);      foreach( DirectoryInfo dir in directory.GetDirectories())      {      // 新建一个数节点,并添加到目录树视      TreeNode newNode = new TreeNode(dir.Name);      parent.Nodes.Add(newNode);      }      }      foreach(TreeNode node in parent.Nodes)      {      // 如果还没有检查过这个文件夹,则检查      if (node.Nodes.Count == 0)      {      directory = new DirectoryInfo(node.FullPath);      // 检查该目录上的任何子目录      foreach( DirectoryInfo dir in directory.GetDirectories())      {      // 新建一个数节点,并添加到目录树视      TreeNode newNode = new TreeNode(dir.Name);      node.Nodes.Add(newNode);      }      }      }      }      catch( Exception doh )      {      Console.WriteLine(doh.Message);      }      }      private string fixPath( TreeNode node )      {      string sRet = &&;      try      {      sRet = node.FullP      int index = sRet.IndexOf(&\\\\&);      if (index & 1 )      {      sRet = node.FullPath.Remove(index, 1);      }      }      catch( Exception doh )      {      Console.WriteLine(doh.Message);      }      return sR      } 接着,给该类添加以下几个属性,这几个属性都是反映所选择的目录的相关信息的,它们将被主窗体的类调用:public string name// 返回所选择的目录的名称{get { return ((folder != null && folder.Exists))? folder.Name : }} public string fullPath// 返回所选择的目录的完整路径{get { return ((folder != null && folder.Exists && treeView1.SelectedNode != null))? fixPath(treeView1.SelectedNode) : }}public DirectoryInfo info// 返回所选择的目录的信息{get { return ((folder != null && folder.Exists))? folder : }}最后,还要添加目录树控件的BeforeSelect()和BeforeExpand()事件函数以及两个按钮的OnClick事件函数。 BeforeSelect()事件函数是用户选定目录前的一个事件函数,它完成了子目录取得、设置文本框内容、获取该目录信息等功能。同样,BeforeExpand()事件函数完成相似的功能,只不过它是在目录节点被展开前发生的。具体的函数实现如下:private void treeView1_BeforeSelect(object sender, System.Windows.Forms.TreeViewCancelEventArgs e){getSubDirs(e.Node); // 取得选择节点的子文件夹textBox1.Text = fixPath(e.Node); // 更新文本框内容folder = new DirectoryInfo(e.Node.FullPath); // 获得它的目录信息}private void treeView1_BeforeExpand(object sender, System.Windows.Forms.TreeViewCancelEventArgs e){getSubDirs(e.Node); // 取得选择节点的子文件夹textBox1.Text = fixPath(e.Node); // 更新文本框内容folder = new DirectoryInfo(e.Node.FullPath); // 获得它的目录信息}private void button1_Click(object sender, System.EventArgs e)// &选择&按钮的消息处理函数{this.DialogResult = DialogResult.OK;this.Close();}private void button2_Click(object sender, System.EventArgs e)// &取消&按钮的消息处理函数{folder =this.Close();}4.到此为止,我们已经完成了所有的代码编写工作。现在可以按Ctrl+F5试试运行效果了。首先会出现下面的主窗体:按下&浏览目录选择对话框&按钮后就出现下面的目录选择对话框了:在目录选择对话框上选定一个目录后,我们按&选择&按钮。这样我们又回到了程序的主界面。因为该主界面是用来显示所选择的目录的一些相关信息的,其中包括了:完整路径、路径信息中的创建时间、全名、上次访问时间、上次改写时间等。图示如下:这样,我们就完成了程序的测试工作了。当然这样的范例是还没有实用功能的,不过你可以试着用同样的方法开发出一个合适的目录选择对话框运用到自己的应用程序中,甚至是一个目录选择对话框组件以供后来者使用,让更多的人受益于你的成果。这样其效用就完全不同了,作为作者的我也会感到相当欣慰的。三、总结:现在这个程序虽然只具有一般的目录选择功能,不过做完这个程序,我们不难发现用C#完成一些应用程序是非常方便的。相比以前我们在SDK、MFC下完成这些还要写很多东西,工作量是非常大而且复杂的。现在微软为我们做好了许多此类工作,我们何不乐意接受呢?所以,快加入C#的行列吧。
请登录后再发表评论!IIS 7.5 详细错误 - 503.4 - Service Unavailable
Internet Information Services 7.5
HTTP 错误 503.4 - Service Unavailable
FastCGI 池队列已满
详细错误信息
模块FastCgiModule
通知ExecuteRequestHandler
处理程序php5.4
错误代码0x
请求的 URLhttp://www.1398.org:80/wd_zd.php?q=knimliqhm
物理路径C:\inetpub\1398.org\wd_zd.php
登录方法匿名
登录用户匿名
最可能的原因:
可尝试的操作:
尝试增大此设置的值。
检查外部资源(例如磁盘、数据库等)的性能是否达到预期的水平。
检查应用程序未被死锁。
链接和更多信息今天看啥 热点:
在很多软件中,都会对窗体的大小、位置和移动进行限定。在不同分辨率的显示器中如何正确显示窗体,如何设置窗体始终在最上面...
<span 038 设置窗体在屏幕中的位置
设置窗体在屏幕中的位置,可以通过设置窗体的属性来实现。窗体的 Left 属性表示窗体距屏幕左侧的距离,Top 属性表示窗体距屏幕上方的距离。
创建一个项目,默认窗体为 Form1,为 Form1 添加 Label 控件,添加 TextBox 控件用来输入距屏幕的距离,添加 Button 控件用来设置窗体在屏幕上的位置。
namespace _038_SetLocation
public partial class Form1 : Form
public Form1()
InitializeComponent();
private void button1_Click(object sender, EventArgs e)
this.Left = Convert.ToInt32(textBox1.Text); //设置窗体左边缘与屏幕左边缘之间的距离
this.Top = Convert.ToInt32(textBox2.Text);
//设置窗体上边缘与屏幕上边缘之间的距离
<span 039 始终在最上面的窗体
实现窗体始终在最上面只需要将窗体的 TopMost 属性设为 True 即可。
创建一个项目,默认窗体为 Form1,为 Form1 窗体添加背景图片,并设置窗体 TopMost 属性为 True。
<span 040 从桌面右下角显示的窗体
主要用到动画显示窗体的 API 函数 AnimateWindow,在该函数的重载方法中,依据参数值的不同窗体会以不同的形式显示和隐藏。
1.创建一个项目,默认窗体为 Form1,添加一个 Windows 窗体,将其命名为 MainForm。
2.在 Form1 窗体上添加一个 GroupBox 控件和两个 Button 控件。在 MainForm 窗体中添加一个 PictureBox 控件和一个 ImageList 控件。
//Form1 窗体代码
namespace _040_SoutheastDisplayWindow
public partial class Form1 : Form
public Form1()
InitializeComponent();
private void display_Click(object sender, EventArgs e)
MainForm.Instance().ShowForm();//显示窗体
private void close_Click(object sender, EventArgs e)
MainForm.Instance().CloseForm();//隐藏窗体
//MainForm 窗体代码
namespace _040_SoutheastDisplayWindow
public partial class MainForm : System.Windows.Forms.Form
#region 声明的变量
private System.Drawing.Rectangle R//定义一个存储矩形框的数组
private FormState InfoStyle = FormState.H//定义变量为隐藏
static private MainForm dropDownForm = new MainForm();//实例化当前窗体
private static int AW_HIDE = 0x; //该变量表示动画隐藏窗体
private static int AW_SLIDE = 0x;//该变量表示出现滑行效果的窗体
private static int AW_VER_NEGATIVE = 0x;//该变量表示从下向上开屏
private static int AW_VER_POSITIVE = 0x;//该变量表示从上向下开屏
#endregion
#region 该窗体的构造方法
public MainForm()
InitializeComponent();
//初始化工作区大小
System.Drawing.Rectangle rect = System.Windows.Forms.Screen.GetWorkingArea(this);//实例化一个当前窗口的对象
this.Rect = new System.Drawing.Rectangle(rect.Right - this.Width - 1, rect.Bottom - this.Height - 1, this.Width, this.Height);//为实例化的对象创建工作区域
#endregion
#region 调用API函数显示窗体
[DllImportAttribute("user32.dll")]
private static extern bool AnimateWindow(IntPtr hwnd, int dwTime, int dwFlags);
#endregion
#region 鼠标控制图片的变化
private void pictureBox1_MouseEnter(object sender, EventArgs e)
pictureBox1.Image = imageList1.Images[1];//设定当鼠标进入PictureBox控件时PictureBox控件的图片
private void pictureBox1_MouseLeave(object sender, EventArgs e)
pictureBox1.Image = imageList1.Images[0]; //设定当鼠标离开PictureBox控件时PictureBox控件的图片
#endregion
#region 定义标识窗体移动状态的枚举值
protected enum FormState
//隐藏窗体
//显示窗体
Display = 1,
//显示窗体中
Displaying = 2,
//隐藏窗体中
Hiding = 3
#endregion
#region 用属性标识当前状态
protected FormState FormNowState
//返回窗体的当前状态
set { Style = }
//设定窗体当前状态的值
#endregion
#region 显示窗体
public void ShowForm()
switch (this.FormNowState)
//判断窗体当前处于何种状态
case FormState.Hide:
//当窗体处于隐藏状态时
if (this.Height &= this.Rect.Height - 192)//当窗体没有完全显示时
this.SetBounds(Rect.X, this.Top - 192, Rect.Width, this.Height + 192);//使窗体不断上移
this.SetBounds(Rect.X, Rect.Y, Rect.Width, Rect.Height);//设置当前窗体的边界
AnimateWindow(this.Handle, 800, AW_SLIDE + AW_VER_NEGATIVE);//动态显示本窗体
#endregion
#region 关闭窗体
public void CloseForm()
AnimateWindow(this.Handle, 800, AW_SLIDE + AW_VER_POSITIVE + AW_HIDE); //动画隐藏窗体
this.FormNowState = FormState.H//设定当前窗体的状态为隐藏
#endregion
#region 返回当前窗体的实例化对象
static public MainForm Instance()
return dropDownF //返回当前窗体的实例化对象
#endregion
相关搜索:
相关阅读:
相关频道:
&&&&&&&&&&&&&&&&
C#教程最近更新

我要回帖

更多关于 新建form窗体 的文章

 

随机推荐