C#在不同窗体中设置菜单menuStrip可用或不可用(或者使之变灰)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#在不同窗体中设置菜单menuStrip可用或不可用(或者使之变灰)相关的知识,希望对你有一定的参考价值。
求救:我第一个Form有menuStrip1,其中有一个子菜单是“登录”,运行时,点“登录”会弹出一个新的Form3,Form3上有个button"确定",我想首先设置那些菜单不可用,当点击“确定”成功登录后设置菜单可用。
回答满意,我还有分追加。这个好商量。急用
假设你有菜单的FORM为FORM1,下面的示例中只添加两个菜单:登录和文件
FORM1代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace 登录实验
public partial class Form1 : Form
public Form1()
InitializeComponent();
/// <summary>
/// FORM1的LOAD事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Form1_Load(object sender, EventArgs e)
登录ToolStripMenuItem.Enabled = true;
//让文件菜单不可用
文件ToolStripMenuItem.Enabled = false;
/*
把你其他菜单也按照文件菜单的写法,使其不可用
*/
/// <summary>
/// FORM1中单击登录菜单的事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void 登录ToolStripMenuItem_Click(object sender, EventArgs e)
Form3 formLogin = new Form3(this);
formLogin.ShowDialog();
FORM3代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace 登录实验
public partial class Form3 : Form
private Form1 parent;//定义主窗体的一个成员,表示FORM1
/// <summary>
/// FORM3的构造函数,把FORM1传递进来
/// </summary>
/// <param name="_parent"></param>
public Form3(Form1 _parent)
InitializeComponent();
parent = _parent;
/// <summary>
/// FORM3中单击确定按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void buttonOK_Click(object sender, EventArgs e)
//你自己写判断是否登录成功的语句
//当判断登录成功后,执行下列代码。
//让文件菜单可用
parent.文件ToolStripMenuItem.Enabled = true;
/*
把你其他菜单也按照文件菜单的写法,使其可用
*/
//让登录菜单不可用,以免用户再次登录,当然你根据自己需要,可以让其可用。
parent.登录ToolStripMenuItem.Enabled = false;
this.Close();
参考技术A 还要将“文件ToolStripMenuItem”的“Modifiers”属性由"Private"改为"Public"
在c#中怎么能在一个窗口中设置另一个窗口控件的属性?急急急!!!
现在的问题是,我有两个窗体,一个main窗体,一个login窗体:login窗体中设置main窗体中的菜单控件menustrip的enable 属性为false
我该怎么做???急急急...
最好有示范代码。。。本人菜鸟。。。。谢谢啊..
2、用构造函数,例如在login窗体中:
Menustrip menu1=new Menustrip();
public loginfrm(Menustrip menu2)
InitializeComponent();
menu1=menu2;
3、用委托
main窗体中:
public bool menuEnable
getreturn menustrip.enable;
set(menustrip.enable=value;)
login窗体中:
mainfrm.menuEnable=false;追问
你这123写的是步骤还是有三种方法啊?我没看懂唉...能再详细一点吗?
参考技术A 穿窗体的静态变量。。。。。类似于单例模式。。。。 public static Main _cmain=null;//窗体初始化的时候 进行new下。。。然后 其他窗体通过引用可以达到效果。。LZ可以试试看。。或者自己google相关信息 做个提示!! 参考技术B 这个问题我也遇到过,如果用Fr2控制Form1中的窗体控件,可以在Fr2的事件中编写Form1 frm1 = (Form1 )this.Owner; 语句,这样就可以用frm1对象控制Form1中的控件了.追问用了你的想法,可是不行啊,它报 System.NullReferenceException异常啊
追答这个异常貌似是你缺少对所修改窗体的引用啊!你添加using form1试试,这里的form1依照你程序而定。
参考技术C private MainForm m_data = null;private void readdata_Load(object sender, EventArgs e)
m_data = new MainForm();
m_data.browseControl.Enabled = false;
参考技术D 传引用,学过么追问
能不能详细点呢?我菜鸟一个啊
追答传参数会不?
追问传参数会啊...能不能把详细步骤写一下啊...这个我有点晕
追答你在本窗体会操作吧?this.控件.属性=值,你把这个this传到另一个窗体不就行了么,我手机上的没办法发代码
追问用过了,但是他报空引用异常啊,为什么啊
追答发你QQ,我给你发个项目
追问980463316,谢谢啊..
以上是关于C#在不同窗体中设置菜单menuStrip可用或不可用(或者使之变灰)的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Windows 窗体 (C#) 中设置列表框的确切高度?
如何在Windows应用程序中设置用户空闲或不活动时的定时器。