小编Geo*_*ffM的帖子

C#对象到数组

使用反射我有一个对象,我需要将其转换为可迭代的项目列表(类型未知,将是对象).使用Watch窗口我可以看到我的对象是某种类型的数组,因为它告诉我元素的数量,我可以爆炸树视图来查看元素本身.

首先,我需要检查传递的对象是某种数组(可能是List,可能是object []等).然后我需要遍历该数组.但是,我无法进行类型转换.

这是我如何使用它(缩写):

    private static void Example(object instance, PropertyInfo propInfo)
    {
        object anArray = propInfo.GetValue(instance, null);
        ArrayList myList = anArray as ArrayList;
        foreach (object element in myList)
        {
            // etc
        }
    }
Run Code Online (Sandbox Code Playgroud)

我尝试了各种不同的演员阵容.上面没有引发异常,但是当anArray实际存在且包含项目时,mylist为null.保存的实际实例是强类型List <>,但如果需要,可以采用有限的表单子集.但是练习的重点是这个Example()方法不知道属性的基本类型.

c# arrays reflection collections casting

23
推荐指数
3
解决办法
8万
查看次数

TableLayoutPanel大小调整

我可能没有使用正确的控件来满足我的需求.我正在填充一个带控件的表,我希望每列自动调整其中包含的控件的大小.例如,一列文本框将比一列复选框宽.由于不同的操作系统,不同的DPI,不同的字体等的复杂性,我不想摆弄测量是否能帮助它.桌子可以水平扩展以适应控件,带有滚动条.如何通过TableLayoutPanel或其他控件实现这一点?

谢谢.

编辑添加代码:

    private void UpdateLocations()
    {
        tableLayoutPanel1.RowCount = CurrentSchedule.location.Length + 1;
        tableLayoutPanel1.ColumnCount = 7;
        int row = 1;
        int timeWidth = TextRenderer.MeasureText("00:00:00x", tableLayoutPanel1.Font).Width;

        Label lab = new Label();
        lab.Text = "Location";
        tableLayoutPanel1.Controls.Add(lab, 0, 0);

        lab = new Label();
        lab.Text = "Arrive";
        tableLayoutPanel1.Controls.Add(lab, 1, 0);

        lab = new Label();
        lab.Text = "Depart";
        tableLayoutPanel1.Controls.Add(lab, 2, 0);

        lab = new Label();
        lab.Text = "Pass?";
        tableLayoutPanel1.Controls.Add(lab, 3, 0);

        lab = new Label();
        lab.Text = "Path";
        tableLayoutPanel1.Controls.Add(lab, 4, 0);

        lab = new Label();
        lab.Text …
Run Code Online (Sandbox Code Playgroud)

c# size tablelayoutpanel winforms

11
推荐指数
1
解决办法
3万
查看次数

XML xs:int十六进制值

我想将数字存储在类型为或其他简单整数类型的XML文件中,但允许用户以十六进制格式输入数字.XML标准是否允许这样做,因为我找不到任何相关的东西?

例如,如果XSD说:

<xs:element name="value" type="xs:integer" use="required" />
Run Code Online (Sandbox Code Playgroud)

那么我希望XML能够说:

<value>0xFF00FF</value>
Run Code Online (Sandbox Code Playgroud)

或者十六进制的符号.

显然我可以尝试但只能证明在一个特定的实现中支持,而不是它是否是标准.我并不特别在意保存到XML是否会失去基础.

xml hex xsd

7
推荐指数
2
解决办法
1万
查看次数

html5“时间”输入24小时

用户的 PC 使用 12 小时制(晚上 11:59)。用户想要使用 24 小时制 (23:59) 输入时间。浏览器各不相同,但 Firefox(例如)甚至不允许您在小时内输入 23,而过去的一些 Win32 组件允许您输入“23:__ --”但在您输入时将其更改为“11:__ PM”移动到分钟字段 - 仍然不理想但更好。

我们是否仍然需要使用一些花哨的 3rd 方组件来处理所有变化以提供跨浏览器的统一用户体验?是否计划在 HTML5.1(或其他)中指定 24 小时格式?

我知道这之前已经被问过好几次了,但我看到的所有答案都是一年多以前的,从那时起事情发生了很大的变化。

html time

6
推荐指数
1
解决办法
1万
查看次数

mysqldump不导出数据或结构

我有一个简短的PHP脚本,应该执行MySQL备份并将其通过电子邮件发送给我。但是,mysqldump不会写入数据或结构。调用mysqldump的命令如下所示:

mysqldump --host=localhost --user=xxx --pass=xxx xxx_license > xxx2012-12-28.sql
Run Code Online (Sandbox Code Playgroud)

(xxx用户名和密码与用于php和数据库的另一个脚本的密码相同,所以我知道凭据是正确的)。

输出如下:

-- MySQL dump 10.13  Distrib 5.5.28, for Linux (x86_64)
--
-- Host: localhost    Database: xxx_license
-- ------------------------------------------------------
-- Server version   5.5.28-cll

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Current Database: …
Run Code Online (Sandbox Code Playgroud)

mysql mysqldump

5
推荐指数
1
解决办法
8871
查看次数

WPF绑定ListBox主/详细信息

我可以使用XmlDataSource但不能使用我自己的类.我想做的就是将列表框绑定到我的集合实例,然后将文本框链接到列表框,以便我可以编辑该人的姓名(双向).我故意保持这个尽可能简单,希望有人可以填补空白.

XAML:

<Window x:Class="WpfListTest.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:WpfListTest"
    Title="Window1" Height="300" Width="600">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="160"/>
            <ColumnDefinition Width="3"/>
            <ColumnDefinition Width="1*"/>
        </Grid.ColumnDefinitions>
        <DockPanel Grid.Column="0">
            <ListBox />
        </DockPanel>
        <DockPanel Grid.Column="2">
            <StackPanel>
                <Label>Name</Label>
                <TextBox />
            </StackPanel>
        </DockPanel>
    </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

C#代码背后:

namespace WpfListTest
{
    /// <summary>
    /// Interaction logic for Window1.xaml
    /// </summary>
    public partial class Window1 : Window
    {
        public People MyPeeps = new People();

        public Window1()
        {
            InitializeComponent();

            MyPeeps.Add(new Person("Fred"));
            MyPeeps.Add(new Person("Jack"));
            MyPeeps.Add(new Person("Jill"));
        }
    }

    public class Person
    {
        public string Name { …
Run Code Online (Sandbox Code Playgroud)

c# wpf binding .net-3.5

4
推荐指数
1
解决办法
6723
查看次数

枚举中的C#@从XSD生成类

使用xsd.exe我有一个枚举,其中一个元素前面有一个@符号.我无法理解为什么,我无法弄清楚它的用途或含义.在Google上搜索符号的效率并不高.

原始XSD片段:

  <xs:simpleType name="stopLocation">
    <xs:restriction base="xs:string">
      <xs:enumeration value="default"/>
      <xs:enumeration value="near"/>
      <xs:enumeration value="far"/>
      <xs:enumeration value="nearExact"/>
      <xs:enumeration value="farExact"/>
    </xs:restriction>
  </xs:simpleType>
Run Code Online (Sandbox Code Playgroud)

生成的类片段:

public enum stopLocation {
    @default,
    near,
    far,
    nearExact,
    farExact,
}
Run Code Online (Sandbox Code Playgroud)

(是的,最后的元素有一个逗号,VS似乎很满意)

谢谢.

c# enums xsd

3
推荐指数
1
解决办法
726
查看次数

Delphi 6游标不变

如果我有一个ButtonClick事件设置Cursor:= crHourglass,Application.ProcessMessages,然后使用TOpenDialog选择一个文件,然后执行一些CPU密集型操作,光标的行为会有所不同,具体取决于它是否在打开时是否超过现有控件对话框关闭.如果光标在控件上方,则光标保持为沙漏; 如果它完全在应用程序之外,然后在密集过程仍在进行时移动到该区域,则光标保持为箭头.一个人无法点击或做任何事情,因此让用户感到困惑的是获得箭头但却无法对其进行任何操作.

单步执行调试器会显示Cursor在任何位置都应为-11.使用Screen.Cursor而不是Cursor具有相同的效果.

有解决方案吗?

procedure TMyForm.LoadButtonClick(Sender: TObject);
begin
  Cursor := crHourglass;
  Application.ProcessMessages;
  if OpenDialog.Execute then begin
    // Do something intensive
    // Cursor = crHourglass here but what is displayed is different
  end;
  Cursor := crDefault;
end;
Run Code Online (Sandbox Code Playgroud)

windows delphi delphi-6

-2
推荐指数
1
解决办法
1227
查看次数