我有一个基于系统托盘的应用程序.如果你右键单击它我有一个很好的上下文菜单但是我想要一个不同的上下文菜单,如果你点击它就会出现.现在我把不同的菜单显示出来
private void niTrayIcon_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Left)
{
cmsTrayLeftClick.Show(Cursor.Position);
}
}
Run Code Online (Sandbox Code Playgroud)
这使得菜单显示但单击菜单不会使其消失,使菜单消失的唯一方法是单击项目或rt单击托盘图标.
我也想出了这个黑客,但它确实感觉这是正确的方法.
private void niTrayIcon_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Left)
{
niTrayIcon.ContextMenuStrip = cmsTrayLeftClick;
MethodInfo mi = typeof(NotifyIcon).GetMethod("ShowContextMenu", BindingFlags.Instance | BindingFlags.NonPublic);
mi.Invoke(niTrayIcon, null);
niTrayIcon.ContextMenuStrip = cmsTrayRtClick;
}
}
Run Code Online (Sandbox Code Playgroud)
这是正确的做法还是有更优雅的方式?
我有一个SelectList,它填充了数据库中的数据.数据来自a Dictionary<int, string>并填充SelectList,如下所示.
//...
Courses = new SelectList(GetCourses(),"Key","Value");
//...
Run Code Online (Sandbox Code Playgroud)
在视图上,它将数据库中的第一条记录显示为下拉列表中的默认选定值.我想清除此值并将下拉列表留空,以便用户可以手动选择一个值.如果可能的话,不使用javascript.
//I have this on the view
<%= Html.DropDownListFor(model => model.CourseID, Model.Courses) %>
Run Code Online (Sandbox Code Playgroud)
请帮忙!
我今天发现了一段有趣的代码:
auto ch = (double(), (float(), int()))["\t\a\r\n\0"]["abcdefghij"];
Run Code Online (Sandbox Code Playgroud)
其作用相同:
char str[] = "abcdefghij";
char ch = str['\t'];
Run Code Online (Sandbox Code Playgroud)
为什么它甚至可能?特别是为什么编译器从字符串中挑选第一个char并将其用作下标而不是抛出错误?
使用CMake,我可以使用Subversion_WC_INFO.但是,这仅在配置时发生 - 每个后续make都将使用此缓存的修订版.
我想在构建时获得svn修订版(即每次Make运行时).我怎样才能做到这一点?
我有一个FlowDocument并为一个段落分配了一个名称.
我想编辑一个段落的内容(这只是一个普通的字符串顺便说一句.).
这该怎么做?
我有一个按元素名称属性排序的元素集合.我需要在维护订单的同时将新元素插入到集合中.我正在寻找一种简洁的LINQ方式来做到这一点.我的代码如下."this.Children"是集合,"d"是我需要插入的新元素.在集合上需要两次传递才能找到插入点.有没有办法从First()扩展方法获取索引?(请不要建议使用foreach,我知道:),我正在学习LINQ).
谢谢!康斯坦丁
var v = this.Children.FirstOrDefault(x => string.Compare(x.Name, d.Name) > 0);
int index = this.Children.IndexOf(v);
if (index < 0)
{
this.children.Add(d);
}
else
{
this.Children.Insert(index, d);
}
Run Code Online (Sandbox Code Playgroud) 我有一个工作对话框,我想在应用程序流程中更改内容,我的意思是更改对话框的.html()属性...
我觉得这很容易,但我似乎无法做到:
$ dialog.dialog().html(SOME CONTENT);
在我已经运行对话框后如何做到这一点?
我的初始代码是:
var $dialog = $('<div></div>')
.html(SplitTable)
.dialog({
autoOpen: false,
height: 500,
width: 600,
title: '????? ?????'});
$dialog.dialog('open');
Run Code Online (Sandbox Code Playgroud)
那里的身份证在哪里?这是我理解我应该从示例中做到的,没有看到任何Id属性...
ps splitTable是我在程序到updatTable期间需要更改的内容...
10倍
需要一个函数去除javascript中的一组非法字符: |&;$%@"<>()+,
这是一个需要用正则表达式解决的经典问题,这意味着现在我有两个问题.
这是我到目前为止所得到的:
var cleanString = dirtyString.replace(/\|&;\$%@"<>\(\)\+,/g, "");
Run Code Online (Sandbox Code Playgroud)
我正在用反斜杠逃避正则表达式特殊字符,但我很难理解正在发生的事情.
如果我单独尝试使用单个文字,它们中的大多数似乎都可以工作,但是一旦我将它们放在同一个正则表达式中,取决于顺序,替换就会被破坏.
即这不起作用 - > dirtyString.replace(/\|<>/g, ""):
帮助赞赏!
我正在尝试获取从https安全站点发送的JSON,
客户端希望不使用任何服务器端语言(Javascript中的全部内容)
我已经读过,当使用Jquery的.ajax函数时,我必须使用JSONP来从安全站点加载JSON.
我的第一个问题是将JSONP设置为什么格式?现在我的代码看起来像这样:
html =new Object();
html = $.ajax({
url: "https://my-secure.net",
async: false,
dataType: 'jsonp'
}).responseText;
//alert(html);
alert("myObject is " + html.toSource());
console.log(html);
Run Code Online (Sandbox Code Playgroud)
但是,没有任何信息被警告,Firebug中也没有任何记录.基本上我希望能够操纵JSON数据.我在Firebug下的Response中看到了数据,但是出现了"无效标签"的错误.我已经读过,为了解决这个问题,你将它包含在带有额外parantheses的eval函数中,但这不起作用.
http://b.lesseverything.com/2007/10/25/invalid-label-error-when-eval-json
我也得到一个错误,说我的$ .ajax请求是"未定义的",但我可以看到响应中的数据.我怀疑这与我如何抓取初始数据有关.任何意见,将不胜感激.谢谢!
c# ×5
javascript ×3
jquery ×2
.net ×1
ajax ×1
asp.net-mvc ×1
c++ ×1
cmake ×1
contextmenu ×1
datetime ×1
jquery-ui ×1
json ×1
jsonp ×1
linq ×1
notifyicon ×1
obfuscation ×1
regex ×1
string ×1
svn ×1
winforms ×1
wpf ×1
xaml ×1