当我想在某个事件被触发后阻止其他事件处理程序执行时,我可以使用两种技术之一.我将在示例中使用jQuery,但这也适用于plain-JS:
event.preventDefault()$('a').click(function (e) {
// custom handling here
e.preventDefault();
});
Run Code Online (Sandbox Code Playgroud)
return false$('a').click(function () {
// custom handling here
return false;
});
Run Code Online (Sandbox Code Playgroud)
这两种停止事件传播的方法之间有什么显着差异吗?
对我来说,return false;比执行方法更简单,更短并且可能更不容易出错.使用该方法,您必须记住正确的套管,括号等.
另外,我必须在回调中定义第一个参数才能调用该方法.也许,有一些原因可以解释为什么我应该避免这样做并使用preventDefault呢?有什么更好的方法?
javascript jquery event-handling event-propagation dom-events
我已经实现了一个自定义跟踪侦听器(派生自TextWriteTraceListener),现在我想将我的应用程序设置为使用它而不是标准TextWriteTraceListener.
首先,我添加了默认值TextWriteTraceListener,以确保它正常工作.这是我的app.config:
<configuration>
<system.diagnostics>
<trace autoflush="true" indentsize="4">
<listeners>
<add name="TextListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="trace.log" />
<remove name="Default" />
</listeners>
</trace>
</system.diagnostics>
</configuration>
Run Code Online (Sandbox Code Playgroud)
现在我的跟踪侦听器在MyApp.Utils命名空间中定义并且被调用FormattedTextWriterTraceListener.所以我在上面的配置中更改了类型MyApp.Utils.FormattedTextWriterTraceListener,它目前看起来像这样:
<configuration>
<system.diagnostics>
<trace autoflush="true" indentsize="4">
<listeners>
<add name="MyTextListener" type="MyApp.Utils.FormattedTextWriterTraceListener" initializeData="trace.log" />
<remove name="Default" />
</listeners>
</trace>
</system.diagnostics>
</configuration>
Run Code Online (Sandbox Code Playgroud)
但是现在,当我尝试记录一些我正在收到ConfigurationErrorsException消息时:
找不到类MyApp.Utils.FormattedTextWriterTraceListener的类型.
有谁知道如何在配置中设置这个自定义监听器,如果它甚至可能?
我有一个字符串,我需要做一些替换.我有一个Dictionary<string, string>我定义的搜索替换对的地方.我创建了以下扩展方法来执行此操作:
public static string Replace(this string str, Dictionary<string, string> dict)
{
StringBuilder sb = new StringBuilder(str);
return sb.Replace(dict).ToString();
}
public static StringBuild Replace(this StringBuilder sb,
Dictionary<string, string> dict)
{
foreach (KeyValuePair<string, string> replacement in dict)
{
sb.Replace(replacement.Key, replacement.Value);
}
return sb;
}
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法呢?
如何在单击ac#应用程序中的按钮时在IE中打开网页.我的目的是为ac#应用程序创建一个web登录,需要在IE中以指定的宽度和高度打开,并且需要在应用程序中调用一个函数.
我的iPhone应用程序设置很少,用户可能会经常更改.我想知道是否有任何建议的方法来处理这些设置(阅读和保存它们).在Apple网站上,我发现只有一个关于将应用程序设置与设置应用程序(链接)集成的教程,但我不希望用户退出我的应用程序,因此他可以更改选项.
是否有任何默认机制来处理应用程序本身的设置或我是否必须实现自己的解决方案?
我正在使用Ad Hoc发行版将我的iPhone应用程序的预览版/测试版发送给客户进行审批.我总是发送一个压缩的应用程序和mobileprovision文件.
然而,有时我遇到了应用程序中没有任何内容发生变化但我们需要添加新设备进行测试的情况.
我在Provisioning portal中添加了一个设备,并将其分配给我的应用程序用于临时分发的配置文件.我已经下载了新的mobileprovision文件并将其导入xcode现在问题是我是否需要重新构建应用程序以在新设备上启用应用程序,还是仅仅发送带有更新的mobileprovision文件的旧版本?
可能的重复:
为什么sql查询具有"where 1 = 1"
为什么有人在SQL子句中使用WHERE 1 = 1 AND <conditions>?
我在不同的查询示例中看到了很多,它可能适用于所有SQL引擎.
如果存在没有定义条件的查询,则人们(特别是ORM框架)通常会添加始终为真的条件WHERE 1 = 1或类似的东西.
而不是
SELECT id, name FROM users;
Run Code Online (Sandbox Code Playgroud)
他们使用
SELECT id, name FROM users WHERE 1 = 1;
Run Code Online (Sandbox Code Playgroud)
我可以想到的唯一可能的原因是,如果你动态添加条件,你不必担心剥离初始条件,AND但是1 = 1如果查询中存在实际条件,则通常会剥离此条件.
CakePHP的实际示例(由框架生成):
(没有条件)
SELECT `User`.`id`, `User`.`login`
FROM `users` AS `User` WHERE 1 = 1
ORDER BY `User`.`id` ASC;
Run Code Online (Sandbox Code Playgroud)
(有条件)
SELECT `User`.`id`, `User`.`login`
FROM `users` AS `User`
WHERE `User`.`login` = 'me@example.com'
LIMIT 1;
Run Code Online (Sandbox Code Playgroud)
是否有任何理由增加额外的条件?
使用新的Outlook VSTO C#项目创建的ThisAddIn类具有一个Application属性,您可以使用该属性访问Outlook文件夹和项目.问题是当你在ThisAddIn类中时可以轻松使用它,但是从项目中的其他类中无法轻松访问它.这是因为它是一个实例属性.
我想找到这个属性在我的其他类中提供相同功能的最佳方式,所以我想出了两个可能的解决方案,但我不知道它们中的哪一个(如果有的话)是好的.
让我们假设我想获取默认的收件箱文件夹.在ThisAddIn类里面我会做这样的事情:
this.Application.Session.GetDefaultFolder(Outlook.olFolderInbox);
Run Code Online (Sandbox Code Playgroud)
现在如何在这堂课外做同样的事情?
首先,我可以向ThisAddIn类添加一个静态属性,并将其设置为我想在其他类中公开的值.
public partial class ThisAddIn
{
public Outlook.Application OutlookApp;
void ThisAddIn_Startup(object sender, EventArgs e)
{
// init static variable value here
OutlookApp = this.Application
// initialize the rest of addin here
}
void InternalStartup()
{
this.Startup += this.ThisAddIn_Startup;
}
}
Run Code Online (Sandbox Code Playgroud)
这样在我的任何其他类中我都可以这样做:
ThisAddIn.OutlookApp.Session.GetDefaultFolder(Outlook.olFolderInbox);
Run Code Online (Sandbox Code Playgroud)
我可以做的第二件事是在我使用它之前在我的其他类中初始化Application对象.但我不确定创建该类型的新对象是否不会创建Outlook的新实例.
class MyOtherClass
{
public void MyMethod()
{
var app = new Outlook.Application();
var folder = app.Session.GetDefaultFolder(Outlook.olFolderInbox);
}
}
Run Code Online (Sandbox Code Playgroud)
有没有人有任何建议哪种方法更好,如果你对这个问题有不同的解决方案,我也会对此表示赞同.
我正在使用TextWriterTraceListener将诊断消息记录到文本文件中.但是,我也不想记录添加的每条跟踪消息的时间戳.是否可以为侦听器定义一种自动添加时间戳的格式化程序?
目前我正在每次Trace.WriteLine()通话时手动添加时间戳,但这不是很舒服.
c# ×4
.net ×2
iphone ×2
jquery ×2
trace ×2
cocoa-touch ×1
date ×1
debugging ×1
dictionary ×1
dom-events ×1
formatting ×1
ios ×1
javascript ×1
provisioning ×1
replace ×1
settings ×1
sql ×1
string ×1
time ×1
vsto ×1
where ×1