在Visual Studio 2015中,我找不到RDLC报表的设计器了.有谁知道这只是一个错误,如果它是后来提供的,或者微软想要杀死RDLC,或者他们是否希望我们使用外部设计师,何时,这是哪个设计师?
更新 对于在Visual Studio 2017中搜索RDLC报表设计器的开发人员,现在必须从Visual Studio Marketplace下载它
如果我想在代码中使用decimal-literal,我已经看到存在m后缀(其中m代表金钱).这是否适用于任何小数或存在更一般的分配(d代表double,即为了shure而不是正确的东西,虽然支持直接转换).
object decimalValue=2m;
Run Code Online (Sandbox Code Playgroud)
请注意,我以对象分配为例,因为在...的情况下
decimal decimalValue=2;
Run Code Online (Sandbox Code Playgroud)
...它隐含的明确,2应该通过编译器解释为十进制.
编辑: m似乎没问题,msdn使用它作为十进制类型的示例.
有没有办法使用INotifyPropertyChanged自动属性?也许是一个属性或其他东西,对我来说并不明显.
public string Demo{
get;set;
}
Run Code Online (Sandbox Code Playgroud)
对我来说,自动属性是一个非常实用的东西,但几乎总是,我必须提高PropertyChanged-event如果属性值已被更改并且没有机制来执行此操作,自动属性对我来说是无用的.
我有一个rdlc报告,其中有一个tablix,没有别的.Tablix在水平方向上展开以显示天数,在垂直方向上展示组.
Tablix按预期工作,只要我将内容区域的宽度设置为Tablix的宽度即可.
如果我将内容大小扩展到其固定大小(大约是PageWidth-PageBorders)并运行报表,则每隔一页都是一个空页.
但是Tablix只使用一页.每个奇数页面都是空的.Tablix似乎将其水平扩展添加到当前定义的内容宽度,然后计算溢出.
reportviewer版本为3(2010 Redistributable)
有人有这种奇怪行为的解决方案吗?
更新
如果我将报告导出到Excel,我会看到Tablix的右侧站点上有一列与生成的日期一样长.它似乎真的是一个错误或功能,我没有看到如何停用.
我也尝试从表中创建相同的构造,它导致了同样的问题,这并不令人惊讶,因为该表在内部也是一个Tablix.
更新1
如果我将报告的属性"ConsumeContainerWhitespace"设置为true,则上述测试版本可以正常工作.但是,如果我将其他元素放在"白色"区域中,效果就会重新出现.
问题描述
如果我通过将窗口的所有者设置为父窗口而将非模态窗口设置为子窗口,然后在此子窗口中显示MessageBox,则在关闭子窗口时父窗口将失去焦点.如果Windows资源管理器或其他应用程序打开,此应用程序将获得焦点,我的主窗口将被隐藏.
这似乎是一个已知的问题,因为我在另一个新闻组中看到它,但我没有看到一个很好的解决方案.在OnDeactivate中将所有者设置为null不是一个选项.在将MessageBox显示为null并在此之后重置之前设置所有者没有帮助.在OnClosed事件中将所有者设置为null也没有帮助.
找到简单解决方案
如果您遇到与我所描述的相同的问题,请将以下代码放在所有子窗口的OnClosing中.
void OnClosing(System.ComponentModel.CancelEventArgs e)
base.OnClosing(e);
if (null != Owner) {
Owner.Activate();
}
// ....
Run Code Online (Sandbox Code Playgroud)
它可以跟随任何进一步的处理逻辑,甚至可以容忍打开MessageBoxes.
例如,代码
我认为这个问题似乎要大得多.如果将打开消息框并关闭子窗口,则以下示例将删除父窗口的焦点(将代码复制到Window的已加载事件处理程序中).
Window firstChildWindow = new Window() {
Title = "Floating Window", Width = 100, Height = 70
};
firstChildWindow.Owner = Window.GetWindow(this);
Button button = new Button() { Content="MessageBox"};
button.Click += delegate {
MessageBox.Show("Klicking her breaks the focus-chain."); };
firstChildWindow.Content = button;
firstChildWindow.Show();
Run Code Online (Sandbox Code Playgroud)
此示例也打破了焦点链:
Window firstChildWindow = new Window() {
Title = "Floating Window", Width = 100, Height = …Run Code Online (Sandbox Code Playgroud) 是否有可能从ac#program中取消阻止从Internet下载的文件.浏览互联网我已经了解到,信息是在包含当前区域信息的(NTFS)文件的替代流中写入的(值3来自互联网并被解释为被阻止).
是否有管理的可能性来清除或更改文件的区域信息(解除阻止),或者是否存在托管复制功能,复制没有区域信息的文件?如果没有,我如何处理PInvoke但不包括外部程序集(我不允许在当前项目中执行此操作).
如果我创建了对该IsReadOnly属性的绑定DataGridTextColumn,则它不会实现.如果我通过标记设置它,它的工作原理.
<DataGridTextColumn IsReadOnly="{Binding IsReferenceInactive}"/> <!-- NOP -->
<DataGridTextColumn IsReadOnly="True"/> <!-- Works as expected, cell is r/o -->
Run Code Online (Sandbox Code Playgroud)
该IsReferenceInactive属性是一个DP并且工作正常(出于测试目的,我将它绑定到一个复选框,这有效)
这是一个已知的限制吗?
更新
Uups,除了我写的,输出窗口中有一条消息:
<DataGridTextColumn IsReadOnly="{Binding IsReferenceInactive}"/> <!-- NOP -->
<DataGridTextColumn IsReadOnly="True"/> <!-- Works as expected, cell is r/o -->
Run Code Online (Sandbox Code Playgroud)
似乎是这个:
我尝试尽可能准确地命名一个类(也是成员,属性等).但有时我不确定如果类名变大(50个字符以上),这是否如此聪明.处理是令人不舒服的,代码变得难以阅读.
这个问题很少发生在我身上,因此我没有太多使用这么长的名字的经验,但不时(现在)它会发生.其他人如何处理这个?你有一个近似的上限,然后做缩写或是否值得痛苦处理这么长的名字?
更新
这里要求这样一个长类名称的例子.
ProjectContractChargingPeriodProjectAccountReferenceVM
Run Code Online (Sandbox Code Playgroud)
第一个Project表示域,可以省略它,因为命名空间意味着它已经处理了项目.问题是,如果我用这个类名做这个,那么我必须用这个命名空间的所有类来完成它,并且我明确地不喜欢,因为这个命名空间的许多(短)类名将丢失它们表现力.
[Project] ContractChargingPeriod描述了对象,这个类用于和ProjectAccountReference意味着该类是对a的引用ProjectAccount.使用ProjectAccount与ProjectContract的问题相同.仅使用帐户没有意义,因为在应用程序中还存在其他帐户类.该参考有点弱,因为实际上它只是一个参考,但这是一般目的.该虚拟机是一个缩写,我一直用它代表视图模型.我认为这是合法的,因为与WPF合作的每个人都知道VM意味着什么.
我不得不说,这个类用于从ORM中包装一个类,这个ORM是用很久以前创建的老式工具构建的.那里的类代表准1:1的ERM,我知道这不是最优的,但改变它将是一项重大努力.
在这个问题中,我搜索了一个解锁文件的简单解决方案.感谢所有的评论和回答,我找到了PInvoking的简单解决方案DeleteFile.
它工作,但因为我从来没有通过PInvoke(Win32)使用文件操作,我不知道是否有一些陷阱或是否有另一种方法来调用DeleteFile删除文件的备用流.
我还不知道的是,如果我必须在try/catch中包装调用,或者仅仅查看布尔结果就足够了.在我的测试中,没有提出异常,但我不知道在现实世界中会发生什么.
public class FileUnblocker {
[DllImport("kernel32", CharSet = CharSet.Unicode, SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool DeleteFile(string name );
public bool Unblock(string fileName) {
return DeleteFile(fileName+ ":Zone.Identifier");
}
}
Run Code Online (Sandbox Code Playgroud)
这段代码看起来可靠吗?
更新
我发布了一个不完整的方法(unblock方法没有将"Zone.Identifier"文字连接到文件名).我现在纠正了这个,抱歉.