情况
我们正在向全世界的客户销售Windows Forms应用程序.我们在欧洲和美国的几个国家安装了它.没问题.上周我们在韩国安装了我们的软件并认识到了一种奇怪的行为......
问题仅发生在客户办公室PC上,而是发生在所有客户办公室PC上.有些有Windows 7 Professional K,有些有Windows XP.
客户购买了一台安装了Windows 7旗舰版的新PC.在这台电脑上,没有问题.
功能
我们的应用程序中的所有元素都源自提供特殊功能的"父级用户控件".其中一个功能是"自动调整和定位".当父级更改大小时,将调用所有子级的此函数.
当我们的应用程序启动时,我们存储"ClientSize":
InitializeComponent();
this.m_actSize = this.ClientSize;
Run Code Online (Sandbox Code Playgroud)
每当应用程序的大小发生变化时,我们计算缩放因子并用它引发一个事件:
void myFormSizeChanged(object sender, EventArgs e)
{
this.m_xFactor = (float)this.ClientSize.Width / (float)this.m_actSize.Width;
this.m_yFactor = (float)this.ClientSize.Height / (float)this.m_actSize.Height;
if (this.m_MyOnResize != null)
this.m_MyOnResize(this.m_xFactor, this.m_yFactor);
}
Run Code Online (Sandbox Code Playgroud)
现在,每个订阅的孩子都会执行自动调整大小和定位:
void MyParentUserControl_MyOnResize(float v_xFactor, float v_yFactor)
{
this.Location = new Point((int)(this.m_actLocation.X * v_xFactor), (int)(this.m_actLocation.Y * v_yFactor));
this.Size = new Size((int)(this.m_actSize.Width * v_xFactor), (int)(this.m_actSize.Height * v_yFactor));
}
Run Code Online (Sandbox Code Playgroud)
问题
当我们的应用程序在韩国的客户PC上启动时,宽度约为20%.这意味着,右侧是一个只有灰色背景的区域.高度约为10%至高.这意味着,位于应用程序底部的项目位于屏幕之外.

修复
首先,我们认为问题来自Windows DPI设置.当我将笔记本电脑设置为125%时,它看起来很相似.但是,客户PC都设置为100%......
然后,我们考虑了屏幕分辨率.所有都有不同的,有些和我的笔记本电脑一样......
所有都有不同的grafic适配器......
都有.NET 4.5.1 ......
解决问题的唯一方法是一个奇怪的方法:
this.AutoScaleDimensions = …Run Code Online (Sandbox Code Playgroud) 情况
我们有一个应用程序,我们将机器设置存储在SQL表中.当用户更改机器的参数时,我们创建一个"修订版",这意味着我们在表中插入一行.该表有大约200 列.在我们的应用程序中,用户可以查看每个修订版.
问题
我们想要突出显示自上次修订以来已更改的参数.
问题
是否有一种只使用SQL的方法来获取两行之间差异的列名?
一个例子
ID | p_x | p_y | p_z
--------------------
11 | xxx | yyy | zzz
12 | xxy | yyy | zzy
Run Code Online (Sandbox Code Playgroud)
查询应返回p_x和p_z.
编辑
该表有200列,而不是行...
我的方式
我的目的是为这个问题找到一个"一行SQL语句".
我在下面的答案中看到,它在SQL中更重要.由于没有针对此问题的简短的SQL解决方案,因此在我们的软件(c#)的后端解决它当然要容易得多!
但由于这不是我的问题的真正"答案",我不会将其标记为已回答.
谢谢您的帮助.