的背景
在.NET Windows窗体(2.0)中,单选按钮按容器控件自动分组,无论它是Form,Panel还是GroupBox.
这意味着当您选择一个单选按钮时,同一容器中的每个其他单选按钮都会自动更改为未选中状态.
现在,考虑以下表单布局:
MUST HAVE NICE TO HAVE DESCRIPTION
--------- ------------ -----------------------------------------------
[ ] [ ] The gizmo works
[ ] [ ] The gizmo works beautifully
[ ] [ ] The gizmo works amazingly and makes you breakfast
[ ] [ ] The gizmo comes with a pony
Run Code Online (Sandbox Code Playgroud)
'[ ]'都是一个单选按钮.如您所见,单选按钮应按列分组:选择其中一个无线电应清除列的其余部分,但在另一列中应无效.
问题
基本上问题是这是一个动态生成的形式.
我尝试过但没有奏效
我首先尝试使用三个面板(每列一个)实现动态生成的布局,因此自动单选按钮分组可以正常工作.它确实如此.
但是与单选按钮和它的文本之间的水平对齐相关的布局问题正在扼杀我.直到运行时才会知道文本的大小,文本行可能会换行(有时每个项目会有几次).有时它会正确对齐,有时却不对齐.我即将开始调试这个,但我在想是否可能更改这个三面板实现是一个更好的选择.
我想做什么
我想通过使用TableLayoutPanel三列来重新设计布局,以简化对齐相关的问题,但这意味着我不能使用自动单选按钮分组容器"功能".
编辑:
正如Gerrie建议的那样,其他布局选项是将每一行实现为用户控件并使用流布局面板.
这意味着,我可能想要使用控件进行布局,但不能使用单选按钮分组.
尽管使用水平用户控件,我仍需要获得垂直单选按钮组
/编辑
我想问的是什么 …
Visual Studio C#编译器警告无意中将变量分配给自身,但此警告不适用于C#属性,仅适用于变量.如其他问题所述.
但是,如果我为自己分配一个属性,我真的会喜欢类似的东西,可以在编译时警告我.
我目前正在使用Visual Studio 2013,但如果解决方案至少在Visual Studio 2015中有效,我也没关系.另外,我不使用像ReSharper或CodeRush这样的第三方商业插件,所以我更喜欢不使用的解决方案涉及购买东西,但我愿意接受建议.
你知道我怎么能做到这一点?
我非常习惯使用只读公共"检查"属性来构建接收器依赖注入模式来存储接收到的依赖项.
例如,假设一个Foo依赖于ILogger实现的类.该logger实例在构造函数中提供给类,构造函数检查空值并将依赖项存储在名为的实例属性中Logger:
public class Foo
{
public ILogger Logger { get; private set; }
public Foo(ILogger logger)
{
if(logger == null) throw new ArgumentNullException("logger");
this.Logger = logger;
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我经常输入错误,将属性分配给自己而不是传递给构造函数的参数.
public class Foo
{
public ILogger Logger { get; private set; }
public Foo(ILogger logger)
{
if(logger == null) throw new ArgumentNullException("logger");
this.Logger …Run Code Online (Sandbox Code Playgroud) .NET 2.0中是否有任何支持的API用于写入主exe的.config文件的userSettings部分?
场景是:
Winforms 2.0应用程序.
我有一个具有用户级别范围的设置(数据库连接字符串,如果您需要知道).这意味着当用户保存设置的值时,每个用户都有.net创建的用户 .config文件.
对于第一次运行应用程序的新用户,应用程序的主exe .config文件在用户设置部分中包含默认值.在项目属性的"设置"选项卡中创建设置时,此部分由visual studio创建.
现在,我想允许计算机中的任何管理员用户能够更改新用户的默认值.只有管理员才有此选项,因为普通用户无权写入主exe的.config文件.
我已经找到了如何将用户设置写入用户的.config文件,以及如何写入主.config文件的appSettings部分.但是当我试图找出如何写入主.config的userSettings部分时,我的谷歌搜索失败了
我唯一的机会是失败回System.Xml并在XmlDocument中手动加载.config吗?
我知道代码隐藏文件,但使用DreamWeaver或其他设计工具与Visual Studio程序员合作的设计师最好的现实方式是什么?
例如,假设您有一个基本网站,用户界面表单访问数据库......数据库工作肯定是由开发人员完成的,但如何将设计的表单与可能涉及控件上的事件的数据库编码或客户端逻辑联系起来或其他与GUI相关的搭档.图形设计师是否也控制应用程序流程?似乎存在需要解决的大型断开连接 - 特别是在实施后调整设计的时候.
我知道,我知道,在不同的数据库上放置两个相关的表并不是最好的设计实践.但无论如何,假设我必须绝对做到这一点.我必须将以前位于数据库中的两个与外键相关的表拆分为两个数据库,这两个数据库位于两个不同的服务器上,但我仍然希望保持数据库的完整性.做这个的最好方式是什么?
编辑:我正在使用MySQL和Symfony
灵感来自这个问题:
如何管理必须为每个开发人员设置的应用程序配置设置,而无需将其检入Java平台上的源代码控制?
例如,这就是我们现在正在做的事情:
数据源配置存储在Spring配置xml文件中.
目前,每个开发人员都编辑该文件,并尽力不将该文件提交到源代码管理中.我们中的一些人在对我们的本地数据库执行测试之前应用了代码(diff文件),并在检查代码之前删除补丁.其他开发人员手动编辑和恢复配置文件.
可悲的是,补丁已经过时了.人们有时会忘记在提交之前恢复其本地配置.
但是,我的问题不仅限于数据库连接设置.我想找到一个解决方案,每个开发人员都可以覆盖应用程序配置设置,而无需更改源控制文件.
如果我们必须改变存储配置设置的方式,那么我认为我们应该这样做(也许是JNDI?,外部配置文件在众所周知的路径中?,我不知道)
你会做什么/你做过什么?
我正在阅读F#教程,并遇到了一个我不理解的语法示例.我正在阅读的页面链接位于底部.这是该页面的示例:
let rec quicksort2 = function
| [] -> []
| first::rest ->
let smaller,larger = List.partition ((>=) first) rest
List.concat [quicksort2 smaller; [first]; quicksort2 larger]
// test code
printfn "%A" (quicksort2 [1;5;23;18;9;1;3])
Run Code Online (Sandbox Code Playgroud)
我不明白的部分是:((>=) first).究竟是什么?用于对比度,这是从一个示例MSDN文档为List.partition:
let list1 = [ 1 .. 10 ]
let listEven, listOdd = List.partition (fun elem -> elem % 2 = 0) list1
printfn "Evens: %A\nOdds: %A" listEven listOdd
Run Code Online (Sandbox Code Playgroud)
第一个参数(这是正确的术语吗?)List.partition显然是一个匿名函数.我重写了这个问题:
let smaller,larger = List.partition (fun e -> first …Run Code Online (Sandbox Code Playgroud) 找出我的OS X上安装了哪个版本的iPhone SDK的最简单方法是什么?
当您登录Apple的iPhone开发人员中心时,您可以看到当前可用版本的SDK的内部版本号,但您必须记住是否已经下载了该版本.
保持最新状态的最简单方法是什么?
我需要有关非技术用户的安装CD布局的建议.
我的软件部署在带有setup.exe引导程序和MSI文件的CD上.安装程序还使用了几个依赖项文件.CD root看起来像这样:
myapp.msi
setup.exe
sqlexpr32.exe
dotnetfx.exe
myapp.ico
...
Run Code Online (Sandbox Code Playgroud)
对于开发人员而言,猜测您需要运行的文件才能开始安装,这不是火箭科学setup.exe.
但我的用户绝对不是技术娴熟的.
我已经包含了一个autorun.inf文件,但是我在几台机器上测试后发现它们中的大多数都没有自动启动设置.无论出于何种原因 在某些机器中,有人禁用了自动运行,或某些防病毒软件,或其他什么.问题是我不能总是依赖自动运行.
所以我正在考虑更改CD布局,以便更明显地运行哪个文件.
一个选项是创建一个新Install.exe程序,只启动原始引导程序,并将所有内容移动到CD根目录中的文件夹:
autorun.inf <-- launches Install.exe, if autorun is enabled for the drive.
Install.exe <-- launches contents/setup.exe
contents/myapp.msi
contents/setup.exe
contents/sqlexpr32.exe
contents/dotnetfx.exe
contents/myapp.ico
contents/...
Run Code Online (Sandbox Code Playgroud)
由于我还不能依赖.net框架,我不能使用.net来制作我的Install.exe,这有点烦人.
其他选项是制作一个,Install.bat但大多数用户不熟悉.bat扩展名,可能不会考虑双击它.并且用户将看到命令提示符窗口.
其他选项是制作一个自解压exe并压缩内部的所有内容,因此CD中唯一的文件是autorun.inf和自解压文件.
你会怎么做?
我正在攻击一个快速而又脏的python脚本来生成一些报告作为静态html文件.
在Web应用程序的上下文之外轻松构建静态html文件的好模块是什么?
我的目标是简单(HTML不会非常复杂)和易用性(我不想编写大量代码只是为了输出一些html标签).
我在第一次goolge搜索时找到了两个选择:
此外,我觉得使用模板引擎会过度杀死,但如果你不同,请说出来,为什么.
还有其他推荐吗?
C#2005我正在使用简单的加密和解密来获取IP地址.远程服务器上的应用程序将加密IP地址,客户端将对其进行解密.但是,当客户端解密IP时,我只返回一些IP地址.其余的都是垃圾.之前:123.456.78.98之后:fheh&^ G.78.98
非常感谢,
/// Encrypt the SIP IP address in the remote server
private void encryptSIP_IP(string sip_ip)
{
TripleDESCryptoServiceProvider encrypt = new TripleDESCryptoServiceProvider();
/// Private key
byte[] key = { 0, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 144, 89, 55, 34, 21, 13, 8, 5, 3, 2, 1, 0};
encrypt.Key = key;
byte[] byteSIP = System.Text.Encoding.Default.GetBytes(sip_ip);
ICryptoTransform encryptor = encrypt.CreateEncryptor();
byte[] encrypted_sip = encryptor.TransformFinalBlock(byteSIP, 0, byteSIP.Length);
/// This will decrypt in the client application
private …Run Code Online (Sandbox Code Playgroud) ds =(DataSet)Session ["Details"]; DataTable dt = ds.Tables [0];
DataTable temp = dt.Clone();
dt.Rows.Add(ds.Tables[0].Select("ID =" + ID));
Run Code Online (Sandbox Code Playgroud)
错误信息:Unable to cast object of type 'System.Data.DataRow' to type 'System.IConvertible'.Couldn't store <System.Data.DataRow> in Date Column. Expected type is DateTime.
请有人帮帮我.
我有12个由制表符分隔的列.我怎样才能并排加入他们?
[已添加]您也可以告诉我其他方法为AWK:越快越好.