Tag: winforms

使用自定义对象的动态列表,无法动态更改dataGrid的单元格属性

我是新来发布在Stack上的。 我已经搜索了一段与我类似的问题。 我试图动态地根据对象的布尔值将WinForms DataGridView中的复选框从非只读更改为只读。 它在调试模式下显示已发生更改,但一旦完全运行,应该只读取的复选框单元仍然允许检查和取消选中function。 我已经离开了已注释的部分,以表明我已尝试这样做。 m_SingletonForm.dataGridView1.DataSource = list; m_SingletonForm.dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells; m_SingletonForm.dataGridView1.Columns[“StoreGroup”].ReadOnly = true; m_SingletonForm.dataGridView1.Columns[“Message”].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; m_SingletonForm.dataGridView1[0, 0].ReadOnly = true; foreach (DataGridViewRow row in m_SingletonForm.dataGridView1.Rows) { //var isChecked = Convert.ToBoolean(row.Cells[“SendFile”].Value); //if (!isChecked) //{ //m_SingletonForm.dataGridView1.Rows[0].Cells[“SendFile”].Style.BackColor = Color.Red; //m_SingletonForm.dataGridView1.Rows[0].Cells[“SendFile”].ReadOnly = true; //m_SingletonForm.dataGridView1.Rows[row.Index].Cells[“SendFile”].Style.BackColor = Color.Red; //m_SingletonForm.dataGridView1.Rows[row.Index].Cells[“SendFile”].ReadOnly = true; //m_SingletonForm.dataGridView1[“SendFile”, row.Index].ReadOnly = true; //m_SingletonForm.dataGridView1[“SendFile”, row.Index].Style.BackColor = Color.Red; […]

为什么我的WPF应用程序在显示WinForms对话框后不能正常关闭?

我在我的WPF应用程序中使用第三方WinForms登录对话框,由于某种原因,这使得我的WPF应用程序在调试时没有正确关闭。 如果我在登录之前退出winforms登录对话框,应用程序将正确关闭,但是如果我成功登录并启动WPF窗口,则退出窗口不会关闭应用程序。 我在App的OnExit方法中放了一个断点,它永远不会被调用。 我覆盖了我的主窗口的OnClosing方法,并且确实被调用但是甚至调用Application.Current.ShutDown()也没有正确退出应用程序。 我也尝试将我的应用程序的ShutdownMode设置为OnExplicitShutdown和OnMainWindowClose ,但这些都没有将其关闭。 我有的唯一提示是调试窗口中出现以下内容,但我不知道它试图告诉我什么。 The thread ‘vshost.RunParkingWindow’ (0xf74) has exited with code 0 (0x0). The thread (0x1b58) has exited with code 0 (0x0). 只有在Visual Studio中以调试模式运行时才会出现此问题。 无需调试即可运行应用程序正确关闭应用程序 任何人都可以指出我可能导致这种行为的正确方向吗? 编辑 WinForms登录对话框不是带有Show()或Close()方法的传统登录对话框,它是一个只有Login()和Logout()方法的静态类。 有人这样使用它: if (CompanyNamespace.ApplicationName.Login()) { var shell = new ShellView(); var context = new ShellViewModel(); shell.DataContext = context; shell.Show(); // When the Shell Window […]

将鼠标侧按钮绑定到VisualStudio操作

我尝试将XButton 1和2(鼠标的侧面按钮)重定向到特定的Visual Studio操作。 当我按下XButton1时,我想编译项目/构建它。 默认情况下,此操作绑定到F6 。 当我按下XButton2时,我想在代码和设计视图(WinForms)之间切换。 这与F7绑定。 在使用Visual Studio内置工具多次尝试后,我使用AutoHotKey创建了以下脚本: XButton2:: IfWinActive Microsoft Visual Studio { Send {F7} return } XButton1:: IfWinActive Microsoft Visual Studio { Send {F6} return } 但是,我想知道是否有人知道使用Visual Studio 2015实现相同的本地方式?

删除gridview选择器列

我确信这个问题的答案非常明显,但对于我的生活,我无法弄清楚如何从默认的winforms gridview中删除“selector”列。 (红色箭头指向的列)。 我已尝试以编程方式删除列gridview.Columns[0].Remove 。删除,但刚刚删除了我的第一个数据列。 它也没有出现在“列集”中,而且我玩过所有看似有希望的设置。 谢谢您的帮助!

为什么一个对象没有用var强制键入foreach?

我写的是以下内容 if(this.tabControl1.TabPages.Count != ImagesList.Count()) { foreach (var item in this.tabControl1.TabPages) { } } 我无法使用项目访问每个项目内的控件。 但是定义它的类型就像 if(this.tabControl1.TabPages.Count != ImagesList.Count()) { foreach (TabPage item in this.tabControl1.TabPages) { } } 我可以使用item.Controls轻松访问它们 所以我想知道为什么我真的需要定义/转换这些项目作为TabPage ,不应该编译器/ intellasense计算出它作为this.tabControl1.TabPages每个项目实际上是一个TabPage ?

从数据源将不同的条目绑定到DataGridViewComboBoxCell

我想要在DataGridView中显示以下数据: DataEntry[] data = new[]{ new DataEntry(){Name = “A”, Entries = new []{ “1”, “2”}}, new DataEntry(){Name = “B”, Entries = new []{ “1”, “2”, “3”}}}; “Name”将是一个简单的TextBox字段,“Entries”是一个ComboBox,其中可供选择的项目是列表中的元素。 所以在这个例子中会有2行(下面是datagridview的样子): Name Entries Row1 : A Row1 : B 我的问题是,如何绑定这些数据?! 我查看了DataPropertyName,DisplayMember和ValueMember属性……但是无法解决这个问题。 下面是代码 – 有一个注释,我需要添加神奇的几行来为Entries列设置DataSource等。 public partial class Form1 : Form { DataEntry[] data = new[]{ new DataEntry(){Name = […]

如何使用TableAdapter进行更新?

我正在WindowsApplication编写一个使用数据库的程序。 我用DataGridView显示数据库值。 目前,我希望有可能通过DataGridView更新数据库,因此我编写了这段代码: private void MainForm_Load(object sender, EventArgs e) { // TODO: This line of code loads data into the ‘databaseDataSet1.products’ table. You can move, or remove it, as needed. this.productsTableAdapter1.Fill(this.databaseDataSet1.products); } private void upButton1_Click(object sender, EventArgs e) { this.productsTableAdapter1.Update(this.databaseDataSet1.products); MessageBox.Show(“הנתונים עודכנו בהצלחה!”); } 问题是没有将值更新到数据库中。 如果有人可以帮我解决这个问题,我会很高兴,甚至更好,解释如何使用DataGridView ,因为我没有在互联网上找到任何有用的东西。

如何将标签的字体颜色设置为与GroupBox的标题颜色相同?

我希望在一个表单上有一些标签,其字体颜色与我的组框上的标题相同,而且如果用户在他们的系统上应用了不同的主题,我希望这些颜色能够改变。 我可以在不更改默认的GroupBox标题的情况下执行此操作吗? 更新: 我已经尝试将Label ForeColor设置为ActiveCaption,这对于默认(蓝色)方案看起来没问题,但是当我将方案更改为Olive Green时,标签和组框标题不一样。 此外,GroupBox正常行为是将FlatStyle设置为Standard将标题颜色设置为ForeColor,但是要创建新的GroupBox并将其ForeColor设置为ControlText,您必须首先将其设置为ControlText以外的其他内容,然后再将其设置回来。 (如果你不遵循我的意思,那就试试吧。)

文本框焦点检查

我有一个win应用程序表单,有3个文本框和按钮作为拨号盘(它是一个触摸屏应用程序).​​.. 当按下拨号盘按钮时,我想检查这3个文本框中的哪一个具有焦点,并向其附加文本。 就像是: if (tbx1.Focused == true) { tbx1.Text += “0”; } else if (tbx2.Focused == true) { tbx2.Text += “0”; } else { tbx3.Text += “0”; } 但这不起作用……它会一直将文本附加到tbx3。 有什么建议? 谢谢 :)

调用MessageBox.Show()时,定时器才有效

怎么可能? 为什么? 如果没有网络连接,我有一个调用的计时器,如方法down: public void Foo() { for (int i = 0, count = MailList.CheckedItems.Count; i < count; i++) { /* Check for network available connection in computer public bool HasConnection() { return System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable(); } */ if (!net.HasConnection()) { SearchNetworkConnection.Start(); //start the timer } } } 和Timer的_Tick方法: private void SearchNetworkConnection_Tick(object sender, EventArgs e) { ++ATTEMPRECONNECT; […]