返回首页

&# 160;介绍
本文介绍了在C#。NET上下文菜单的基础知识,而且还到一些关于如何可以动态生成的文本在上下文菜单中的细节深入研究。你不会需要所有这一切,但我认为它的价值,即使你不。如果你想一个quot;谷歌Forquot,在你的程序的上下文菜单,这篇文章会给你一些提示。背景
当我设计一个方案,我总是代码重要的是,后端代码。这是好的,但在某些时候,我意识到我需要做出更好的界面(甚至创建一个摆在首位的接口)。而且,一旦我添加的设施,如按钮,菜单,偏好对话框等,我不知道我怎么没有他们的生活。有一个漂亮的界面,使测试程序更愉快 - 我什至不说用户可能会觉得如何。了这么久,我忽略了用户界面和公正的算法设计和逻辑集中,但我来实现用户界面使方案好得多。我想这是真的,我没有在命令行上浏览网页 - 我使用的是Safari(WebKit的),这是相当好看。我用的是Vista,其中有各种半透明和阴影。所以 - 我喜欢漂亮的界面,所以我应该把一些精力,做出漂亮的界面
我的程序有书签系统,某些菜单项,一个状态栏,和输入框(按键时),可即时更新。定义文本框。该方案是有趣的发挥有点。今天我加入的方式为用户右键单击一个字的定义框,这个词在上下文菜单中查找。这不是一个很难的事情,但它的东西,会更容易在一个关键的情况,如果你已经在做一个测试项目。此功能的一些要求:的选择必须出现在选定的文本上下文menu.The引号内,必须进行消毒,然后在上下文菜单中显示(清除无用的字符)。使用代码
因此,这里就是我did.Create一个新的表单元素,在设计师 - 一个上下文菜单条。在右边的"工具箱",而在表单的设计,和双击的ContextMenu。这将会把一个上下文菜单的代表在任何静态上下文,在上下文菜单中的菜单项(它会出现在左上角)tray.Type。在第一个屏幕,静态文本将quot; Copyquot的ContextMenu,以下三个事件添加事件处理程序:开业,开放,ItemClicked。要做到这一点的最好办法是选择在设计师的托盘底部的ContextMenu,然后去"属性"窗格中,然后单击闪电。在这里,你可以看到可以使事件。向下滚动到ItemClicked,开放,并开设了活动,并在旁边的ID空间,​​双击。
在上面的图片,我点击的ContextMenu项目在quot; trayquot,然后在"属性"(在右边),我选择了闪电,和旁边的空间字开幕双击。
确保挂钩的形式控制,你想让它出现在上下文菜单中!点击你想要的上下文菜单的形式,然后按一下就可以了。然后,在"属性"窗格中,选择您的新的ContextMenu它说的ContextMenuStrip。

您可能需要修改之前,你把它在上下文菜单中的显示选定的文本。如果需要,创建一个漂亮的成员函数与正则表达式或只是一些普通的输入检查代码..
所以,在这里你生成动态文本 - 在这个例子中,"查找{string}的quot; ,或在不同的程序,这可能是"谷歌。{字符串} quot;

void contextMenuStrip1_Opened(object sender, EventArgs e)

{

    // get the text from the textbox. then, set the second item in the context menu

    // to the string "Lookup {string}". You could also use the text "Google For".

    string text = textBox1.SelectedText;

    

    // you will want to write a method to "clean up" the text variable here,

    // but you can figure out that easily on your own.

    contextMenuStrip1.Items[1].Text = "Lookup " + text;

    

    // save our lookup string for use later.

    contextMenuStrip1.Tag = text;

} 
最后,我们要真正做一些事情,当用户点击的ContextMenu!我们将使用的ItemClicked事件处理程序。如果它不存在,双击下ItemClicked属性的条目。这是EventHandler的你可以使用的一个例子。有许多方法来实现这些东西。这里有一种方法:{C}
这将创建的第一个屏幕的效果。 "谷歌Forquot;范围内的项目,你的心脏的内容!一个用户的喜好的Web浏览器会弹出,如果你使用的Process.Start()。

回答

评论会员:mohmeh83 时间:2011/12/16
感谢
评论会员:。sebbry 时间:2011/12/16
你救了我很多时间... ...
评论会员:游客 时间:2011/12/16
thanhchiho:当我使用ChangePassword功能,我"连接到系统的设备无法正常工作(异常来自HRESULT:0x8007001F)。"错误讯息,即使更改密码成功了。但密码时不需要密码的广告政策,它的工作确定。{五}你可以帮我解决这个问题。谢谢
xExTxCx
评论会员:游客 时间:2011/12/16
!要开始伟大的文章,非常感谢你但是,我有一个快速问题,我不能似乎要弄清楚......我每次使用的方法"resetPassword"我得到这个错误:"异常已被调用的目标引发"无论我做什么......{中六}在想,如果你有什么想法,为什么会这样呢?感谢
!Kipetcoff
评论会员:游客 时间:2011/12/16
最新的尝试,我用的是:codepreADADir=spanclass="code-keyword"new/spanAD();ADir.resetPassword(ADir.getUserDN(spanclass="code-string""/spanspanclass="code-string"Username"/span),spanclass="code-string""/spanspanclass="code-string"password"/span);/pre/code
DABBee
评论会员:游客 时间:2011/12/16
,我曾经见过此之前下的函数被调用,如果用户帐户不具有域管理权限,并提供密码不符合域密码复杂性要求,{七}
xExTxCx
评论会员:游客 时间:2011/12/16
这就是我要找的。访问数据库和AD。感谢
!xExTxCx
评论会员:游客 时间:2011/12/16
你没在20008这是?