Tag: winforms

覆盖ListBox的DrawItem – 未重绘未选择的项目

这是一个C#桌面应用程序。 我的ListBox的DrawStyle属性设置为OwnerDrawFixed 。 问题:我重写DrawItem以不同的字体绘制文本,它的工作原理。 但是当我开始在运行时调整窗体大小时,所选项目被正确绘制,但其余部分没有重绘,导致文本看起来对于未选择的项目是损坏的。 这是我的代码: private void listDevices_DrawItem(object sender, DrawItemEventArgs e) { e.DrawBackground(); string textDevice = ((ListBox)sender).Items[e.Index].ToString(); e.Graphics.DrawString(textDevice, new Font(“Ariel”, 15, FontStyle.Bold), new SolidBrush(Color.Black), e.Bounds, StringFormat.GenericDefault); // Figure out where to draw IP StringFormat copy = new StringFormat( StringFormatFlags.NoWrap | StringFormatFlags.MeasureTrailingSpaces ); copy.SetMeasurableCharacterRanges(new CharacterRange[] {new CharacterRange(0, textDevice.Length)}); Region[] regions = e.Graphics.MeasureCharacterRanges( textDevice, new Font(“Ariel”, […]

可垂直滚动的GroupBox

我正在使用Windows Application Forms创建一个应用程序 。 我基本上是C#和Visual Studio的新手(从昨天开始使用它)。 到目前为止,我已经成功创建了一个简单的表单,如屏幕截图所示。 我的表格 背景/详情 我使用框中提供的IP从MySQL表中获取数据。 此数据正在加载到DataSet 。 自从过去10个小时以来,我一直在将它们展示到以下每个中: 的DataGridView TableLayoutPanel中 将它们放在窗体窗口的其余部分。 但这两项产出都不是我想要的。 我提取的其中一个列是VARCHAR ,最多可达190 chars 。 两个案例的最终结果都不是很容易阅读,这让我想到了问题。 题 所以,现在我正在考虑使用垂直滚动条在GroupBox中显示文本。 DataSet的数据可以根据要求显示在Label或LinkLabel 。 这种方法是否可行(时间优化)? 还有其他类型的盒子/视图可以满足我的条件吗? 我将从主表中获取并显示最多225行 ,并且从另一个表(在foreach循环内部)中获取每个至少2个链接 。 请建议我这项工作的任何其他最佳解决方案。 另外,如何向GroupBox添加200多个标签,并使框可以垂直滚动。 据我所知,在Visual Studio 2010中 , GroupBox不存在VerticalScroll属性。

更改禁用控件的TextColor

禁用控件时如何更改文本的颜色。我想在c#winforms中禁用控件时设置不同的颜色。

如何通过编码点击按钮?

我的程序中有两个按钮,我希望当我按下第一个按钮时,第二个按钮被自动点击(在第一个按钮的事件处理程序中,我想通过编码按下第二个按钮)。 private void button1_Click(object sender, EventArgs e) { passWord = pwd.Text; user = uName.Text; loginbackend obj = new loginbackend(); bool isValid = obj.IsValidateCredentials(user, passWord, domain); if (isValid) { loginbackend login = new loginbackend(); passWord = pwd.Text; login.SaveUserPass(passWord); HtmlDocument webDoc = this.webBrowser1.Document; HtmlElement username = webDoc.GetElementById(“__login_name”); HtmlElement password = webDoc.GetElementById(“__login_password”); username.SetAttribute(“value”, user); password.SetAttribute(“value”, passWord); HtmlElementCollection inputTags […]

无法在app.config上写入设置(或者不显示任何更改)

我正在.net framework 4.5上创建一个应用程序 每当我想加载应用程序配置值(appSettings部分)并写入更改时,如果我刷新该部分,我看不到我的更改。 我做错了什么? 我该如何解决? 码 private void LoadConfig() { NameValueCollection appSettings = ConfigurationManager.AppSettings; for (int i = 0; i < appSettings.Count; i++) { switch (appSettings.GetKey(i)) { case "initialCatalog": txtInitialCatalog.Text = appSettings.GetValues(i)[0]; break; case "dataSource": txtDatasource.Text = appSettings.GetValues(i)[0]; break; case "userName": txtUsername.Text = appSettings.GetValues(i)[0]; break; case "password": txtPassword.Text = appSettings.GetValues(i)[0]; break; case "portalUrl": txtUrl.Text […]

是否可以在多行文本框中使用不同颜色的线条?

是否可以在多行文本框中使用不同颜色的线条? 我正在向文本框中添加数据,我想用颜色为用户澄清不同类型的文本。 如果有可能怎么做?

一次只检查一个ListViewItem

我正在使用Compact Framework开发智能设备项目。 我有一个带有几个可检查ListViewItem :属性CheckBoxes为true。 我需要在时间只检查一个ListViewItem ,所以我订阅了ItemCheck事件: // I need to know the last item checked private ListViewItem lastItemChecked; private void listView_ItemCheck(object sender, ItemCheckEventArgs e) { if (lastItemChecked != null && lastItemChecked.Checked) { /* I need to do the following to prevent infinite recursion: ie subscribe and then unsubscribe the ItemCheck event. */ listView.ItemCheck -= listView_ItemCheck; […]

使用SharpDX的HUD基础知识:如何绘制屏幕表面?

脚本 我打算学习如何为第三方PC游戏(免费,合法)开发自定义HUD的基础知识,我的目的是开发一个应用程序,在屏幕上绘制/显示其他信息(通过读取mem地址)。 所以我研究了专业项目,我发现使用SharpDX库的TurboHUD使用基于DirectX的库在屏幕上绘制对象/覆盖/文本,结果非常好(在绘图的任何时候都不会失去性能)屏幕上的多个对象),但是,由于该项目的作者没有提供理解他们如何做到这一点的来源,所以我试图自己学习使用相同的专业技术。 题 如果我走错路或者我错过了一些比SharpDX更好的替代方案来开发它,请告诉我。 我的主要问题是: 在C#或最好是VB.Net中,我如何使用SharpDX在屏幕上有效地绘制自定义字符串? 请注意,我可以将Form的难度设置为0,但我认为它应该存在正确的方式,并且我要求知道在“桌面”屏幕上直接绘制的正确方法。 我期望推出PC游戏,然后启动我的自定义HUD,它将在“桌面”屏幕上绘制以添加游戏的其他信息,我希望你理解我。 研究 我应该澄清一下,我对这种DirectX库完全缺乏经验,我正在使用SharpDX示例包来尝试学习它的用法。 由于所有样本都在C#中,因此在VB.Net下学习它的用法更加困难。 在SharpDX示例包中有一个’ AdvancedTextRenderingApp’C #项目,但正如它的名字所说它是一个高级示例,它也是一个自定义表单( SharpDX.Windows.RenderForm )来绘制该表单。 这是我提到的C#项目的VB.Net代码翻译: http://pastebin.com/KG2c3v09 更新: 只是打算对我所做的研究发表评论: 我最近发现了这个有用的GitHub存储库 ,然而,它无法在Visual Studio 2015中编译(因为缺少命名空间使用,添加它们会产生更多编译器错误),它也面向高级SharpDX用户,并在分析完整样本后仍然不知道如何在第三部分流程窗口的表面上编写/绘制…而且C#语法让我对SharpDX的使用有了全面的了解,因为作者也做了大量的SharpDX定制实现成员,然后……我不仅仅是失去了所有这些例子。 SharpDX官方样本是另一个看似非常有用的东西……可能适用于高级用户。 一些示例似乎演示了如何渲染自定义窗口/表面(使用500个繁琐且难以理解的代码行来完成它。而且他们的“ Hello world ”示例对我来说是一场噩梦。)但是,我想要做的就是我在我的问题中解释的是在另一个进程的现有窗口的表面上绘制,并且我知道可能的是,我需要使用SharpDX从头开始渲染“表面”,然后将其定位在目标窗口中,然后使表面看不见,然后画上它,但我不知道该怎么做。

单击按钮隐藏/显示窗口的一部分

我有一个简单的表单,包含一个主视图,还有一些文本框和一个“添加”按钮,我用它来添加显示在主视图中的数据(并存储在文本文件中)。 我想要做的是添加一个小按钮,切换隐藏/显示添加控件。 这种按钮通常是一个小方块,包含两个箭头,根据状态向上/向下。 我怎么做? (我很抱歉这个可怕的头衔,但我不知道这个名字的正确名称。有谁能告诉我?)

如何设置padding到listview项目?

我在Windows窗体中的大图标视图上有一个Listview,图像彼此非常接近。 那我怎么能设置填充物品?