我已经成为.NET开发人员已有好几年了,这仍然是我不知道如何正确完成的事情之一.通过Windows窗体和WPF中的属性很容易从任务栏隐藏窗口,但据我所知,这并不能保证(或必然会影响)它从Alt+ ↹Tab对话框中隐藏.我已经看到隐形窗口显示在Alt+中↹Tab,我只是想知道什么是保证窗口永远不会出现(可见或不可见)Alt+ ↹Tab对话框的最佳方法.
更新:请参阅下面我发布的解决方案.我不允许将自己的答案标记为解决方案,但到目前为止,它是唯一有效的解决方案.
更新2:弗朗西·佩诺夫现在有一个看起来很不错的正确解决方案,但我自己没有尝试过.涉及一些Win32,但避免了屏幕外窗口的蹩脚创建.
我一直在研究在C#中创建适用于多种语言的应用程序,因为我需要处理一个小项目,在这种情况下.我发现基本上有两种方法可以做到这一点:
将表单的Localizable属性设置为true,设置语言属性,填充所有标签等,然后您就完成了.我在这里看到的主要缺点是:如何制作不属于多种语言的表单的其他内容(例如弹出窗口,日志文件或窗口等).
创建一个资源文件,例如'Lang.en-us.resx'和每种语言一个,例如'Lang.nl-nl.resx'并用字符串填充它.IDE似乎自动为我生成一个类,所以在代码中我可以使用Lang.SomeText.我在这里看到的最大缺点是:对于每个表单,我需要在代码中自己设置所有标签和其他标题(并且似乎数据绑定不适用于这些资源).
不过,我确信还有其他方法可以做到这一点.
那么,最佳做法是什么?对于小型应用程序(一些形式,数据库连接等)以及哪种规模最适合大型应用程序,最简单的是什么?
继这个问题之后,是否可以从对象的构造函数中检测一个是处于设计模式还是运行时模式?
我意识到这可能是不可能的,而且我将不得不改变我想要的东西,但是现在我对这个具体问题很感兴趣.
我有两个不同的WinForms应用程序,AppA和AppB.两者都运行.NET 2.0.
在AppA中我想打开AppB,但我需要将命令行参数传递给它.如何使用我在命令行中传递的参数?
这是我目前在AppB中的主要方法,但我认为你不能改变它吗?
static void main()
{
}
Run Code Online (Sandbox Code Playgroud) 如何DataGridView在运行时以编程方式选择特定范围的行?
我在我的代码中使用以下语句生成GUID
byte[ ] keyBytes = Encoding.UTF8.GetBytes( Guid.NewGuid( ).ToString( ).Substring( 0, 12 ) );
Run Code Online (Sandbox Code Playgroud)
但是,当生成GUID时,我发现它也包含连字符.如何生成仅包含字母(大写和小写)和数字的GUID?我不想要连字符.有人能给我这么想法吗?
我试图右对齐一个控件StatusStrip.我怎样才能做到这一点?
我没有看到一个属性来设置ToolStripItem控件,指定它们在父项上的物理对齐方式StatusStrip.
如何让消息下拉到右对齐?http://i.friendfeed.com/ed90b205f64099687db30553daa79d075f280b90
以下是代码示例:
private void loadCustomer(int custIdToQuery)
{
var dbContext = new SampleDB();
try
{
var customerContext = from t in dbContext.tblCustomers // keeps throwing:
where t.CustID.Equals(custIdToQuery) // Unable to create a constant value of type 'System.Object'.
select new // Only primitive types ('such as Int32, String, and Guid')
{ // are supported in this context.
branchId = t.CustomerBranchID, //
branchName = t.BranchName //
}; //
if (customerContext.ToList().Count() < 1) //Already Tried customerContext.Any()
{
lstbCustomers.DataSource = customerContext;
lstbCustomers.DisplayMember = "branchName";
lstbCustomers.ValueMember = …Run Code Online (Sandbox Code Playgroud) 我想显示在外部库中执行的计算进度.
例如,如果我有一些计算方法,并且我想在我的Form类中使用它为100000个值,我可以写:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Caluculate(int i)
{
double pow = Math.Pow(i, i);
}
private void button1_Click(object sender, EventArgs e)
{
progressBar1.Maximum = 100000;
progressBar1.Step = 1;
for(int j = 0; j < 100000; j++)
{
Caluculate(j);
progressBar1.PerformStep();
}
}
}
Run Code Online (Sandbox Code Playgroud)
我应该在每次计算后执行步骤.但是,如果我在外部方法中执行所有100000计算,该怎么办?如果我不想让这个方法依赖于进度条,我什么时候应该"执行步骤"?例如,我可以写
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void CaluculateAll(System.Windows.Forms.ProgressBar progressBar)
{
progressBar.Maximum = 100000;
progressBar.Step = 1;
for(int j = 0; …Run Code Online (Sandbox Code Playgroud) winforms ×10
c# ×9
.net ×4
alt-tab ×1
command-line ×1
datagridview ×1
linq ×1
localization ×1
progress-bar ×1
statusstrip ×1
wpf ×1