Tag: winforms

从控制台调用的Form.Show()冻结了GUI

我试图直接从控制台应用程序实例化一个窗体。 出于一些奇怪的原因,当我调用Form1.Show() ,新创建的Form不会绘制其所有控件和冻结(HourGlass图标)。 但是,当我调用ShowDialog()时,一切都很顺利,除了我需要回到控制台,但我不能,所以它不是一个选项…… 我该怎么做才能正确显示表格? 我在这里错过了什么吗? OrderControlForm OrderControlBox = new OrderControlForm(); OrderControlBox.BuyEvent += new OrderControl.BuyDelegate(doBuy); OrderControlBox.SellEvent += new OrderControl.SellDelegate(doSell); OrderControlBox.Show(); 调用上述代码以响应Console用户输入的命令。 编辑:这是工作代码: Thread mThread = new Thread(delegate() { StratControlBox = new StratControl(StratIDs); StratControlBox.ShowDialog(); }); mThread.SetApartmentState(ApartmentState.STA); mThread.Start(); 我仍然不明白为什么我必须调用ShowDialog()而不是Show() 。 当我使用后者时,Form在涂漆后立即“消失”。

如何从Process.Start打开到同一浏览器窗口或选项卡的链接?

我试图从Windows窗体上的LinkLabel打开一个浏览器窗口。 单击时,控件将传递给LinkClicked事件,代码将使用以下命令调用默认浏览器: System.Diagnostics.Process.Start(“http://www.google.com”); 我希望能够单击链接(即多次运行Start),但只能进入同一浏览器窗口或选项卡。 当然,多次点击每次都会为Google打开一个新标签。 我知道如何使用如下链接指定命名窗口: Click Here! 但是我如何在Start命令中执行此操作? ETA:我在About表单上单击了Internet Explorer自己的可链接链接,每次都会打开一个新窗口,所以甚至微软也许都无法做到这一点。 嗯。

预加载程序集:引用,未引用,在需要之前不加载

我想在显示主窗体之前创建一个启动屏幕,显示单个assembly的加载。 我正在做的预加载: Assembly a = System.Reflection.Assembly.GetExecutingAssembly(); foreach (AssemblyName an in a.GetReferencedAssemblies()) { Assembly.Load(an); } 我有两个问题: 问题1: 某些程序集在预加载后加载,即使它们未包含在引用中: ‘x.vshost.exe’(Managed(v4.0.30319)):已加载’C:\ windows \ Microsoft.Net \ assembly \ GAC_MSIL \ PresentationFramework-SystemData \ v4.0_4.0.0.0__b77a5c561934e089 \ PresentationFramework-SystemData.dll’,跳过加载符号。 模块已经过优化,调试器选项“Just My Code”已启用。 ‘x.vshost.exe’(Managed(v4.0.30319)):已加载’C:\ windows \ Microsoft.Net \ assembly \ GAC_MSIL \ PresentationFramework.Aero \ v4.0_4.0.0.0__31bf3856ad364e35 \ PresentationFramework.Aero.dll’,跳过加载符号。 模块已经过优化,调试器选项“Just My Code”已启用。 我可以通过将程序集连接到引用来解决这个问题,但我不想这样做,因为编译器不强迫我。 问题2: 我正在使用telerik RadPadeView。 […]

C#后台工作者更新状态标签

这应该是一件相当简单的事情; 但是,我一直无法弄清楚这一点。 /// This section is located in the InitializeComponent() method /// form’s class, ie partial class frmMain { …. } this.bgw = new System.ComponentModel.BackgroundWorker(); this.bgw.WorkerReportsProgress = true; this.bgw.DoWork += new System.ComponentModel.DoWorkEventHandler(this.bgw_DoWork); this.bgw.ProgressChanged += new System.ComponentModel.ProgressChangedEventHandler(this.bgw_ProgressChanged); /// This code is located in public partial class frmMain : Form { …. } private void bgw_DoWork(object sender, […]

在ListView控件中隐藏ID列

我将ListView控件绑定到DataTable。 DataTable有一个名为ProductID的列。 有没有办法隐藏这个专栏,因为我以后需要它的价值?

在OwnerDraw模式下ListBox DrawItem HotLight状态?

我在我的WinForms应用程序中使用OwnerDrawFixed作为DrawMode用于自定义ListBox控件。 当用户将鼠标hover在列表框项目上时,我希望重新绘制ListBoxItem的背景(或执行其他操作),即在MouseMove … DrawItemState.HotLight永远DrawItemState.HotLight用于ListBox,所以我想知道如何模拟它,如何解决这个问题。

AutoEllipsis = true会影响文本的垂直位置

我有一个标签, AutoEllipsis = true , TextAlign = ContentAlignment.MiddleLeft 。 当我输入不扩展标签宽度的文本时,文本垂直对齐到标签的中间。 但是,当文本扩展标签宽度时,文本不会与中间对齐,而是与顶部对齐。 为什么它会以这种方式运行,是否有办法使文本垂直居中对齐?

如何在Windows窗体中获取按钮控件 – 面板

获取表单中的所有按钮,包括相同表单面板中的按钮。

属性网格项和DoubleClick

我正在使用PropertyGrid控件来编辑应用程序中的某些对象。 我正在使用自定义TypeConverters和TypeEditors来获得更好的用户界面。 我对自定义TypeConverter的布尔属性有问题。 如果我有这个课程: public class MyClass { public string Name { get; set; } [System.ComponentModel.TypeConverter( typeof( BoolTypeConverter ) )] public bool Flag { get; set; } } 然后我在PropertyGrid中创建实例并将其设置为SelectedObject – 一切正常,直到用户在属性网格项上格式化“Flag”属性。 在DoubleClick发出此消息后: alt text http://tcks.wz.cz/property_grid_error.PNG TypeConverter类看起来: public class BoolTypeConverter : System.ComponentModel.TypeConverter { public const string TEXT_TRUE = “On”; public const string TEXT_FALSE = “Off”; public […]

如何从XML文档中读取值以构建ComboBox?

我正在尝试读取一个我想为妈妈制作的xml文件。 基本上这就是我想做的事情: 一个ComboBox ,它将显示XML中的所有蔬菜名称。 选择蔬菜后,第二个ComboBox将在XML中显示食谱名称,该名称可以使用在第一个ComboBox选择的蔬菜进行烹饪。 最后,使用OK Button ,所选配方将读取通向配方的文件路径。 我写的XML C:\\ D:\\ E:\\ F:\\ C#代码 private void Form1_Load(object sender, EventArgs e) { XmlDocument xDoc = new XmlDocument(); xDoc.Load(“Recipe_List.xml”); XmlNodeList vegetables = xDoc.GetElementsByTagName(“Vegetable”); for (int i = 0; i < vegetables.Count; i++) { comboBox1.Items.Add(vegetables[i].Attributes["name"].InnerText); } } private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { //I'm lost at this […]