我希望实现一个简单的"框架"布局,其中包含固定标题,固定左侧导航区域以及主要内容区域,如果需要,可以使用滚动条填充视口剩余部分的100%.我最好的尝试是在下面 - 但是当我向主div添加足够的内容以强制滚动时,我看到滚动条延伸到视口底部的下方.
我究竟做错了什么?或者IE6做错了什么,我该如何解决?
NB请不要建议使用更新的浏览器 - 我很乐意,但不能.
更新1(对于Matti和其他纯粹主义者!) - 我必须生活在为一个集团总部开发Web应用程序的现实限制中,该集团需要由100多个子公司的用户访问,而不是所有子公司都已升级到现代浏览器.有些子公司喜欢以浏览器不兼容为借口不使用总公司强加的申请!
更新2
我是一名应用程序开发人员,而不是网页设计师,这可能是显而易见的.到目前为止,我一直在使用DOCTYPE HTML 4.0 Transitional,我相信在所有IE版本中强制怪癖模式.但是我最近尝试添加AjaxControlToolkit ModalPopupExtender,这会在显示弹出窗口时弄乱我的布局.Google建议我需要使用XHTML 1.0来解决这个问题(AjaxControlToolkit不支持quirks模式),事实上我很乐意转向更干净的基于CSS的布局,但我确实需要我的基本框架布局才能在IE6中工作.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title></title>
<style type="text/css">
html, body
{
height:100%;
margin:0;
padding:0;
overflow:hidden;
}
div
{
border:0;
margin:0;
padding:0;
}
div#top
{
background-color:#dddddd;
height:100px;
}
div#left
{
background-color:#dddddd;
float:left;
width:120px;
height:100%;
overflow:hidden;
}
div#main
{
height:100%;
overflow:auto;
}
</style>
</head>
<body>
<div id="top">Title</div>
<div id="left">LeftNav</div>
<div id="main">
Content
<p>
Lorem ipsum ...
</p> …Run Code Online (Sandbox Code Playgroud) 我见过的示例使用相对于 nuspec 文件位置的路径指定要包含的文件,例如:
<file src=".\bin\Debug\SomeFile.dll" target="..." />
Run Code Online (Sandbox Code Playgroud)
有没有办法以这样的方式指定它,它会根据我的构建配置使用适当的源目录:即:
我有一个包含VBA应用程序的只读Excel工作簿.应用程序保存需要保存在数据库中的所有数据,并且工作簿始终关闭而不保存(通过在BeforeClose中设置ThisWorkbook.Saved = True).
我有以下问题:
用户在Windows资源管理器中双击工作簿,打开工作簿.
用户在Windows资源管理器中双击工作簿上的第二次.
Excel提示:"MyWorkbook.xls已经打开.重新打开将导致您所做的任何更改被丢弃.是否要重新打开MyWorkbook.xls?"
如果用户单击"是",则重新打开工作簿,而不执行已打开的实例的BeforeClose事件处理程序.
这是我的应用程序中的一个问题,因为它意味着BeforeClose事件处理程序中的一些重要的清理代码不会被执行.
任何人都可以建议VBA解决方案.可能是:
禁止提示重新打开工作簿.而是默默地使用已经打开的实例.
以某种方式让BeforeClose或其他事件处理程序在原始实例关闭之前运行,因此我可以运行我的清理代码.
更新:
这是Excel 2003.
我可以通过在Workbook_SheetChanged事件处理程序中设置"ThisWorkbook.Saved = True"来消除不需要的提示(VBA应用程序负责保存需要保存在数据库中的任何数据,所以我不关心Excel保存更改).
但是这并没有解决我的问题:如果我这样做,那么双击浏览器中的工作簿会默默地重新打开工作簿,但仍然可以通过"BeforeClose"事件处理程序调用它.
所以重新解释一下这个问题:
更新2
接受BKimmel的答案 - 似乎没有VBA方法可以从工作簿中拦截此事件.
我将实现的解决方案是将应用程序代码移动到XLA加载项中,该加载项在加载工作簿时自动加载(如果尚未加载).加载项可以处理Open和BeforeClose事件,并存储执行清理所需的信息.
环境:我是TFS 2010中项目的管理员,但没有项目集合的任何管理权限.
是否有一种简单的方法可以为一组用户设置访问权限,以便他们可以:
我的想法是希望他们输入错误,但我不希望他们创建/修改用户故事或任务,也不希望他们有权访问源代码控制.
从我所看到的,标准组没有足够好的控制:
UPDATE
Ewald的答案涵盖了限制访问源代码管理的权限.
但是,Ewald还指出,没有一种现实的方法来设置"工作项类型"级别的安全性,以便用户只能输入/更新错误.他建议可以通过自定义每个工作项定义并为每个工作项类型的每个字段设置字段规则来实现,但这是很多工作,无论如何我想避免自定义流程模板.
因此,我在Connect上创建了一个问题:https://connect.microsoft.com/VisualStudio/feedback/details/591121/configuring-tfs-project-so-that-users-can-create-update-bugs-但是-修改-无-其他
闲暇的好奇心......
我正在研究当前流程的一些属性:
using(Process p = Process.GetCurrentProcess())
{
// Inspect properties
// p.MaxWorkingSet = 1,413,120
// p.MinWorkingSet = 204,800
// p.WorkingSet = 54,140,928
// p.WorkingSet64 = 54,140,928
}
Run Code Online (Sandbox Code Playgroud)
从我对文档的阅读中,这些属性都与工作集大小(以字节为单位)相关,因此我期待看到:
MinWorkingSet <= WorkingSet <= MaxWorkingSet
Run Code Online (Sandbox Code Playgroud)
事实并非如此,任何人都可以解释原因吗?
我有一个应用程序,允许用户创建数字数据的自定义视图,并指定用于显示数据的格式字符串.通常,用户使用.NET标准格式字符串,例如N2,P1.
我现在需要生成Excel导出,并希望根据用户的首选项格式化导出的数据.
是否有"内置"将标准.NET格式字符串转换为可在Excel中使用的自定义格式字符串.例如"N2"=>"#,## 0.00"; "P1"=>"#,## 0.0%",还是我必须自己动手?
本FileStreamResult类拥有一个IDisposable流,如果从与需要构造一个控制器实例化Stream的说法:
public FileResult MyController()
{
...
Stream stream = ...
return File(stream, "text/plain", fileName);
}
Run Code Online (Sandbox Code Playgroud)
它(可能还有它的基类ActionResult)当然应该实现IDisposable?
当然,如果一切顺利,FileStreamResult.WriteFile()方法将处理Stream. 并且当使用内置的 Action Invoker 时ControllerActionInvoker,在发生这种情况之前抛出异常的风险似乎不大。
但是考虑到 MVC 的可扩展架构,在我看来,Exception在使用自定义操作调用程序时,可能会阻止 Stream 被释放。
我原以为ActionResult应该实现IDisposable,并且应该要求 Action Invokers 来保证它们被处理掉。
这是设计缺陷还是有充分的理由?
更新
从亨克霍尔特曼的回答:
请注意,动作调用程序也无法关闭文件,很快就会关闭。
我不明白你在这里说什么 - 可能是因为我对处理程序框架的了解不够。据我所知,Stream 目前由内置的 Action Invoker 处理如下:
InvokeAction => InvokeActionResult => ActionResult.ExecuteResult => FileStreamResult.WriteFile
那么为什么 InvokeAction 不能使用 try/finally 块来确保处理IDisposableActionResult - 从概念上(并且可能过于简化)类似于:
bool …Run Code Online (Sandbox Code Playgroud) 我可以使用 Excel 工作表的属性来判断工作表是否受到保护(Worksheet.Protection、Worksheet.ProtectContents 等)。
如何使用 VBA 判断整个工作簿是否受到保护?
我有一个带有图像(徽标)的Excel工作表.如果我right-click在图片上并选择Format Picture / Protection,则Locked选中该复选框.然后我用密码保护工作表.
尽管如此,最终用户仍然可以选择和删除图像.有什么方法可以防止这种情况吗?
更新
确实没有Edit Objects受到控制.
Worksheet.Protect我使用的方法有许多可选参数,用于控制用户可以在受保护的工作表上修改的内容.其中大部分是名为AllowXXX(例如AllowFormattingColumns)的参数,默认为False.
该参数DrawingObjects是一个例外.此参数默认为False保护必须显式设置的绘图对象True.
我想在进行算术运算之前有效地确保十进制值至少具有N(在下面的示例中为3)位置.
显然,我可以用"0.000######....#"解析格式化,但效率相对较低,而且我正在寻找避免转换为字符串/从字符串转换的解决方案.
我尝试过以下解决方案:
decimal d = 1.23M;
d = d + 1.000M - 1;
Console.WriteLine("Result = " + d.ToString()); // 1.230
Run Code Online (Sandbox Code Playgroud)
这似乎适用于所有值<= Decimal.MaxValue - 1在使用Visual Studio 2015在Debug和Release版本中编译时.
但我怀疑编译器可能会优化(1.000 - 1).C#规范中有什么可以保证它始终有效吗?
或者是否有更好的解决方案,例如使用Decimal.GetBits?
UPDATE
继Jon Skeet的回答后,我之前尝试过添加0.000M,但这对dotnetfiddle不起作用.所以我很惊讶地看到它Decimal.Add(d, 0.000M)确实有效. 这是一个dotnetfiddle比较d + 000M和decimal.Add(d,0.000M):dotnetfiddle的结果不同,但使用Visual Studio 2015编译相同的代码时相同:
decimal d = 1.23M;
decimal r1 = decimal.Add(d, 0.000M);
decimal r2 = d + 0.000M;
Console.WriteLine("Result1 = " + r1.ToString()); // 1.230
Console.WriteLine("Result2 = …Run Code Online (Sandbox Code Playgroud)