当padding大于2时,计算datagridview的填充?

该演示程序有一个表格,上面绘有DataGridView 我已经用一些数据填充了DataGridView 这里有一些答案表明可以计算所有列的总宽度并添加两个,然后在不获取滚动条的情况下为DataGridView提供尽可能小的宽度。 我发现在这种情况下,由于某种原因,计算出的宽度太小,滚动条仍然存在。 在我给datagridview提供数据之后,我使用这3行。 fix_dgvw_efficientbutnotworking_wrongpadding(); dgvw代表datagridview的宽度。 该方法使用“BOS”中提到的答案将dataGridView大小调整为行和列的总大小但是,在这种情况下它似乎不起作用。 顺便说一句,有趣的是,如果datagridview只有一行数据,那么BOS的方法可以工作,那么填充就是两行。 但无论如何,我对这种情况感兴趣,其中datagridview有2行数据..并且该方法不起作用,因为填充不是两个。 你可以直观地看到(特别是如果你停在这里并且刚刚接下来的两行),你会看到,datagridview有滚动条。 MessageBox.Show(test_if_horizontal_scrollbars().ToString()); 上面的行中的这个消息框表示True,表示存在水平滚动条。 MessageBox.Show(fix_dgvw_inefficientbutworks().ToString()); 上面的一行运行的方法相当低效,不断增加datagridview的宽度,直到没有更多的滚动条。 它首先使用BOS的方法,它将宽度调整到合适的宽度,但有时仍然有滚动条,就像这里的情况一样,因此该方法将一次增加一个增量的宽度,直到没有更多的水平滚动条。 在这种情况下,我们看到填充必须再增加15次,我们看到消息框显示15.但这似乎是一种非常低效的查找和修复它的方法。 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace paddingfind { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs […]

如何将位图转换为byte ?

基本上我使用listviews插入事件插入图像,尝试从fileupload控件调整图像大小,然后使用LINQ将其保存在SQL数据库中。 我找到了一些代码来创建fileupload控件中内容的新位图,但这是将它存储在服务器上的一个文件中,从这个来源 ,但我需要将位图保存回SQL数据库,我认为我需要转换回byte []格式。 那么如何将位图转换为byte []格式? 如果我以错误的方式解决这个问题,我将不胜感激,你可以纠正我。 这是我的代码: // Find the fileUpload control string filename = uplImage.FileName; // Create a bitmap in memory of the content of the fileUpload control Bitmap originalBMP = new Bitmap(uplImage.FileContent); // Calculate the new image dimensions int origWidth = originalBMP.Width; int origHeight = originalBMP.Height; int sngRatio = origWidth / origHeight; […]

为什么我的Catch块仅在Visual Studio中进行调试时运行?

Program.cs中的代码 [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); try { Application.Run(new Form1()); } catch (Exception ex) { MessageBox.Show(“Blah…”); } } 在Form1中,我有一个按钮,代码throw new Exception(“”); 。 如果我从Visual Studio运行应用程序,则会弹出我的消息框(消息’Blah …’)。 但是如果我从可执行文件运行应用程序,那么catch块根本不会执行。 为什么不同? 我使用的是Visual Studio 2010,.NET 4.0,Windows XP。

如何在表单中打开表单?

我有一个父表单,我想在父表单中打开一个子表单。 可以这样做吗? 如果是,请回复我的示例代码。 谢谢 !

C#:使用属性值对xml节点进行排序

有没有办法我们可以根据属性值对xmlnodes进行排序, 考虑我不能使用linq 。 因为我使用的是.NET 2.0。 例: 应该像 – > 请帮忙。

使用Gmail发送电子邮件。 错误:服务器响应为:5.5.1需要身份validation

对不起,我看到很多关于此事的类似post,但从来没有找到任何解决我的问题,所以我决定发布它。 我使用ASP.NET c#使用gmail以编程方式发送电子邮件,代码如下。 string EmailAddress = senderemail; MailMessage mailMessage = new MailMessage(EmailAddress, EmailAddress); mailMessage.Subject = “This is a test email”; mailMessage.Body = “This is a test email. Please reply if you receive it.”; SmtpClient smtpClient = new SmtpClient(); smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network; smtpClient.EnableSsl = true; smtpClient.Host = “smtp.gmail.com”; smtpClient.Port = 587; smtpClient.Credentials = new System.Net.NetworkCredential() { […]

获取组中所选RadioButton的索引

我有一个RadioButton rb1的引用。 如何在rb1的组中获取所选RadioButton的索引? 我用Google搜索了一段时间但没有成功。 任何帮助将不胜感激

“没有编辑器可用于”无法打开.cs

我的计算机在处理项目时关闭,当我再次打开C#并恢复它时,我收到一个错误说 “filename.cs”没有可用的编辑器 确保已安装文件类型(.cs)的应用程序 现在我根本无法访问我的代码。 我正在使用Visual C#2010 express。 我尝试直接打开它,它会调出C#,但.cs文件会在记事本中打开。 文件大小为30kb,因此不会被删除。 并且在上次运行的调试文件夹中仍然有一个工作的.exe。 有没有办法恢复代码?

NHibernate和WCF序列化(单向)

类型'[type]’的对象图包含循环,如果禁用参考跟踪,则无法序列化。 我有一个简单的类层次结构设置使用NHibernate作为我的持久层。 例如: public class Parent { public virtual IList Children{get;set;} } public class Child { public virtual Parent Parent{get;set;} } 这样做只是为了将Child与单个父级相关联,并通过数据库中的外键持久化。 NHibernate部分和持久性工作得很好。 通过WCF Web服务公开此关系时会出现此问题。 我意识到这里有一个循环引用并且已经阅读了一些LINQ to SQL的解决方案,允许单向序列化,但是在不使用dbml文件时无法找到解决方案。 UPDATE 另一个问题是,通常的做法是抽象一组DTO通过Web服务而不是原始实体公开吗? 这将解决序列化问题,因为DTO类不一定需要循环引用(因为它们不是NHibernate实体)。 其他更新 我发现了一篇可能正确方向的文章。 我目前正在对此进行测试,如果成功则会发布(因为文章值得)。

如何使用货币符号将字符串解析为十进制?

我不知道为什么这不起作用: string s = “12,00 €”; var germanCulture = CultureInfo.CreateSpecificCulture(“de-DE”); decimal d; if (decimal.TryParse(s, NumberStyles.AllowCurrencySymbol, germanCulture, out d)) { // i want to get to this point Console.WriteLine(“Decimal value: {0}”, d); }