Tag: winforms

在TextBox C#中更改边框颜色

我有以下代码: public class OurTextBox : TextBox { public OurTextBox() : base() { this.SetStyle(ControlStyles.UserPaint, true); } protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); Pen penBorder = new Pen(Color.Gray, 1); Rectangle rectBorder = new Rectangle(e.ClipRectangle.X, e.ClipRectangle.Y, e.ClipRectangle.Width – 1, e.ClipRectangle.Height – 1); e.Graphics.DrawRectangle(penBorder, rectBorder); } } 这是完美的,但它没有显示文本,直到它获得焦点。 有谁能够帮我? 怎么了? 预先感谢。

C#:如何在ListView中添加子项

创建项目(在键下)很简单,但如何添加子项(值)? listView1.Columns.Add(“Key”); listView1.Columns.Add(“Value”); listView1.Items.Add(“sdasdasdasd”); //How to add “asdasdasd” under value?

在Windows窗体中嵌入DOS控制台

是否可以在Windows窗体或C#2.0中的用户控件中嵌入DOS控制台? 我们有一个我的Windows应用程序必须与之交互的遗留DOS产品,并且已经请求遗留产品的实例应该在Windows应用程序中运行。 目前,我正在使用user32.dll找到运行DOS产品的窗口,最小化然后最大化窗口,并在窗口中键入字符。 这不是解决问题的非常好的解决方案,因为这意味着我的应用程序必须将窗口名称存储在应用程序设置中,并且要求用户在使用交互function之前返回到DOS应用程序的正确页面。 编辑:更多信息 遗留应用程序需要对用户可见,但不能在单独的窗口中显示。 我已经尝试了TimothyP的答案并且它运行得很好,但它是否可以实现相同的function,但DOS窗口可视化地嵌入在窗体或用户控件中而不是弹出它自己的窗口? 最好采用ShowDialog()方式,以便用户无法与应用程序进行交互,可以说它们处于“传统模式”。

使用linq-to-entities将字符串转换为datetime的一个大问题

如何使用linq将字符串转换为日期时间到实体…. 我有以下查询,其中visit_date列数据类型是字符串… var memberl = from v in abc.visits join m in abc.members on v.member_Id equals m.member_Id where Convert.ToDateTime(v.visit_Date) >= startdate && Convert.ToDateTime(v.visit_Date) <= enddate group m by new { m.member_Firstname, m.member_Lastname, m.member_Id } into g orderby g.Count() select new { numVisits = g.Count(), firstname = g.Key.member_Firstname, lastname = g.Key.member_Lastname }; 不幸的是我无法改变架构…… 我有错误: linq to […]

绘制透明按钮

我正在尝试在C#(.NET 3.5 SP1)中创建一个透明按钮,以便在我的WinForms应用程序中使用。 我已经尝试了一切让按钮变得透明(它应该在按钮下方显示渐变背景)但它只是不起作用。 这是我正在使用的代码: public class ImageButton : ButtonBase, IButtonControl { public ImageButton() { this.SetStyle( ControlStyles.SupportsTransparentBackColor | ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint | ControlStyles.ResizeRedraw | ControlStyles.UserPaint, true); this.BackColor = Color.Transparent; } protected override void OnPaint(PaintEventArgs pevent) { Graphics g = pevent.Graphics; g.FillRectangle(Brushes.Transparent, this.ClientRectangle); g.DrawRectangle(Pens.Black, this.ClientRectangle); } // rest of class here… } 问题是按钮似乎是从某个地方抓取随机UI内存并从Visual Studio的UI中填充一些缓冲区(在设计模式下)。 在运行时它会抓住一些零缓冲区并且完全是黑色的。 我的最终目标是在隐形按钮而不是矩形上绘制图像。 […]

如何创建一个可以将键发送到控件而不会失去焦点的按钮 – 虚拟键盘

如何创建一个可以将密钥发送到datagridview的按钮(所以我需要以某种方式将datagridview返回到它失去焦点之前的状态) 我会解释这个问题 我有一个带有datagridview和一些按钮的表单 我可以点击按钮,它会输入相应的字母, dataGridView1.Focus(); SendKeys.Send(“a”); //or m or z, depending on the text of the button. 该按钮用于将数据输入datagridview。 我可以这样做,只有在调用datagridview的enter方法时才启用它。 单击该按钮时,datagridview失去焦点,因此我必须在发送密钥之前再次给它焦点。 因此上面两行。 我希望用户能够使用按钮将数据输入到datagrid中。 问题是,假设我希望用户能够输入文本“maz”我无法做到。 我只得到个人a或m或z。 即使我可以将单元格放回可编辑模式,我也需要记住光标所在的位置。所以如果有人将asdf键入单元格并将光标放在d和f之间,然后单击m,我想要它说asdmf。 我不知道如何做到这一点。 我有一个想法..也许如果有一种方法可以注册鼠标在按钮上并且按下了点击,但不会失去对datagridview的关注,那么这将是一种可以完成的方式。 我不知道怎么做,我对不同的方式感兴趣。

创建动态按钮并使用c#将它们置于预定义的顺序中

NET 4.5 C#创建一个Windows窗体。 我想动态创建和添加按钮并为它们分配点击事件,但希望它们像图像一样以特定方式动态放置。 我的问题是如何以上述方式动态放置按钮,即4×4格式(连续4个按钮,4列但无限行)。 是否有可能以胜利forms这样做? 现在我正在尝试下面提到的代码,但是我不知道如何放置如上所示的按钮。 public Form1() { InitializeComponent(); for (int i = 0; i < 5; i++) { Button button = new Button(); button.Location = new Point(160, 30 * i + 10); button.Click += new EventHandler(ButtonClickCommonEvent); button.Tag = i; this.Controls.Add(button); } } void ButtonClickCommonEvent(object sender, EventArgs e) { Button button = sender […]

无法从Gridview – Windows窗体中将记录插入表中

我正在尝试从C#接口网格视图中将新记录插入到源表中….但是当我使用下面显示的buttonclick代码检索记录时…我在gridview中获取记录但没有插入新记录的选项(附加屏幕截图)..我可以从网格视图更新reocrds。 是否有任何选项或属性用于在gridview中启用插入选项? Buttonclickcode: private void RetrieveRules_button_Click(object sender, EventArgs e) { this.dataGridView.DataSource = null; this.dataGridView.Rows.Clear(); SqlCommand cmd1 = con.CreateCommand(); cmd1.CommandType = CommandType.Text; cmd1.CommandText = @” Select TOP 1 * FROM ” + schemaName + “[ERSBusinessLogic] ORDER BY ERSBusinessLogic_ID DESC”; con.Open(); cmd1.ExecuteNonQuery(); DataTable dt = new DataTable(); SqlDataAdapter DA = new SqlDataAdapter(cmd1); DA.Fill(dt); dataGridView.DataSource = dt; con.Close(); […]

克隆控件 – C#(Winform)

可能重复: 可以复制某个控件的所有属性吗? (C#窗口forms) 我必须创建一些类似于作为设计时创建的控件的控件。 创建的控件应具有与预定义控件相同的属性,或者换句话说,我想复制控件。 那个目的是否有任何一行代码? 或者我必须通过一行代码设置每个属性? 我现在正在做的是: ListContainer_Category3 = new FlowLayoutPanel(); ListContainer_Category3.Location = ListContainer_Category1.Location; ListContainer_Category3.BackColor = ListContainer_Category1.BackColor; ListContainer_Category3.Size = ListContainer_Category1.Size; ListContainer_Category3.AutoScroll = ListContainer_Category1.AutoScroll;

如何阻止用户关闭我的C#应用​​程序?

如何在C#中使用unclosed应用程序? 我想禁用表单的“X”按钮,并阻止Windows任务管理器关闭它。 我知道阻止表单关闭的一种方法是处理FormClosing事件,但是如何阻止任务管理器关闭它?