winform Load有啥作用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了winform Load有啥作用相关的知识,希望对你有一定的参考价值。

求详细的答案,越详细越好,现在正在学

中文解释就是
当这个窗口被加载时。。。。
这是一个触发条件
如果想要实现 在窗口被加载时 执行某某某语句 不加载不执行的话
就需要form_load事件了
例如
private void Form2_Load(object sender, EventArgs e)

show_table();
getrows();

意思就是当form2被加载时 执行show_table();和getrows();函数
(这两个函数都是我事先编写好的)
也可以执行例如 label1.text="窗口加载成功!";这一类操作
例如初始化各种变量 以及其他一些操作
值得注意的是
这个和窗口初始化函数不一样
参考技术A 其实就是窗体的加载!因为C#是微软即java 后开发的一种封装语言!简单的说就是将控件拖拖,加点代码!在时间与代码量上大大优于java,因为软件自身把控件所要做的职责都写好于窗体的cs文件中!

winform Load 就好比执行一段java代码!先走mian方法一样!
参考技术B 窗体加载事件,比较常用
如:有的下拉列表在窗体加载时填充。
private void Form_ZzjgSet_Info_Load(object sender, System.EventArgs e)

InitcbxProperty();
InitcbxRest();
参考技术C 这是个加载事件·
就是窗体刚刚弹出来的时候窗体要做的事情(事件。)

此事件最常用的。。
参考技术D 在第一次显示窗体前发生
可以使用此事件执行一些任务,如分配窗体使用的资源。

json.load() 和 json.loads() 函数有啥区别

【中文标题】json.load() 和 json.loads() 函数有啥区别【英文标题】:What is the difference between json.load() and json.loads() functionsjson.load() 和 json.loads() 函数有什么区别 【发布时间】:2017-02-04 19:00:22 【问题描述】:

在 Python 中,json.load()json.loads() 有什么区别?

我猜 load() 函数必须与文件对象一起使用(因此我需要使用上下文管理器),而 loads() 函数采用文件的路径作为字符串。有点混乱。

json.loads() 中的字母“s”是否代表字符串

非常感谢您的回答!

【问题讨论】:

json.loads(s, *) - 反序列化 s(包含 JSON 文档的 strbytesbytearray 实例) - docs.python.org/3.6/library/json.html 【参考方案1】:

是的,s 代表字符串。 json.loads 函数不采用文件路径,而是采用字符串形式的文件内容。看the documentation。

【讨论】:

链接文章指向错误的python版本。问题标记为 2.7。【参考方案2】:

文档很清楚:https://docs.python.org/2/library/json.html

json.load(fp[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, object_pairs_hook[, **kw]]]]]]]])

反序列化 fp(一个支持 .read() 的类文件对象,其中包含一个 JSON 文档)使用此转换表转换为 Python 对象。

json.loads(s[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, object_pairs_hook[, **kw]]]]]]]])

反序列化 s(包含 JSON 文档的 str 或 unicode 实例) 使用此转换表到 Python 对象。

所以load 用于文件,loads 用于string

【讨论】:

“文件类对象”与“str/unicode 实例”。我不明白有什么不清楚的地方?【参考方案3】:

只是为大家解释的内容添加一个简单的例子,

json.load()

json.load 可以反序列化文件本身,即它接受 file 对象,例如,

# open a json file for reading and print content using json.load
with open("/xyz/json_data.json", "r") as content:
  print(json.load(content))

将输出,

u'event': u'id': u'5206c7e2-da67-42da-9341-6ea403c632c7', u'name': u'Sufiyan Ghori'

如果我改用json.loads 打开文件,

# you cannot use json.loads on file object
with open("json_data.json", "r") as content:
  print(json.loads(content))

我会收到这个错误:

TypeError:预期的字符串或缓冲区

json.loads()

json.loads() 反序列化字符串。

所以为了使用json.loads,我将不得不使用read()函数传递文件的内容,例如,

使用content.read()json.loads() 返回文件的内容,

with open("json_data.json", "r") as content:
  print(json.loads(content.read()))

输出,

u'event': u'id': u'5206c7e2-da67-42da-9341-6ea403c632c7', u'name': u'Sufiyan Ghori'

这是因为content.read()的类型是字符串,即<type 'str'>

如果我将json.load()content.read() 一起使用,我会得到错误,

with open("json_data.json", "r") as content:
  print(json.load(content.read()))

给予,

AttributeError: 'str' 对象没有属性 'read'

所以,现在您知道 json.load 反序列化文件和 json.loads 反序列化字符串。

另一个例子,

sys.stdin返回file对象,所以如果我做print(json.load(sys.stdin)),我会得到实际的json数据,

cat json_data.json | ./test.py

u'event': u'id': u'5206c7e2-da67-42da-9341-6ea403c632c7', u'name': u'Sufiyan Ghori'

如果我想使用json.loads(),我会使用print(json.loads(sys.stdin.read()))

【讨论】:

仅供参考,对于 Python 3.6.5,with open()json.loads() 返回异常:TypeError: the JSON object must be str, bytes or bytearray, not 'TextIOWrapper'【参考方案4】:

快速解答(非常简单!)

json.load() 需要一个 FILE

json.load() 需要一个文件(文件对象) - 例如您之前打开的文件,由 'files/example.json' 等文件路径给出。


json.loads() 接受一个字符串

json.loads() 需要一个(有效的)JSON 字符串 - 即 "foo": "bar"


示例

假设您有一个包含以下内容的文件 example.json: "key_1": 1, "key_2": "foo", "Key_3": null

>>> import json
>>> file = open("example.json")

>>> type(file)
<class '_io.TextIOWrapper'>

>>> file
<_io.TextIOWrapper name='example.json' mode='r' encoding='UTF-8'>

>>> json.load(file)
'key_1': 1, 'key_2': 'foo', 'Key_3': None

>>> json.loads(file)
Traceback (most recent call last):
  File "/usr/local/python/Versions/3.7/lib/python3.7/json/__init__.py", line 341, in loads
TypeError: the JSON object must be str, bytes or bytearray, not TextIOWrapper


>>> string = '"foo": "bar"'

>>> type(string)
<class 'str'>

>>> string
'"foo": "bar"'

>>> json.loads(string)
'foo': 'bar'

>>> json.load(string)
Traceback (most recent call last):
  File "/usr/local/python/Versions/3.7/lib/python3.7/json/__init__.py", line 293, in load
    return loads(fp.read(),
AttributeError: 'str' object has no attribute 'read'

【讨论】:

关于json.dump/dumps & json.load/loadsbogotobogo.com/python/…的教程【参考方案5】:

在python3.7.7中,根据cpython source code,json.load的定义如下:

def load(fp, *, cls=None, object_hook=None, parse_float=None,
        parse_int=None, parse_constant=None, object_pairs_hook=None, **kw):

    return loads(fp.read(),
        cls=cls, object_hook=object_hook,
        parse_float=parse_float, parse_int=parse_int,
        parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)

json.load 实际上调用 json.loads 并使用fp.read() 作为第一个参数。

所以如果你的代码是:

with open (file) as fp:
    s = fp.read()
    json.loads(s)

这样做是一样的:

with open (file) as fp:
    json.load(fp)

但是如果您需要指定从文件中读取的字节,例如fp.read(10),或者您要反序列化的字符串/字节不是来自文件,您应该使用 json.loads()

对于 json.loads(),它不仅反序列化字符串,还反序列化字节。如果s 为字节或字节数组,则先解码为字符串。您也可以在源代码中找到它。

def loads(s, *, encoding=None, cls=None, object_hook=None, parse_float=None,
        parse_int=None, parse_constant=None, object_pairs_hook=None, **kw):
    """Deserialize ``s`` (a ``str``, ``bytes`` or ``bytearray`` instance
    containing a JSON document) to a Python object.

    ...

    """
    if isinstance(s, str):
        if s.startswith('\ufeff'):
            raise JSONDecodeError("Unexpected UTF-8 BOM (decode using utf-8-sig)",
                                  s, 0)
    else:
        if not isinstance(s, (bytes, bytearray)):
            raise TypeError(f'the JSON object must be str, bytes or bytearray, '
                            f'not s.__class__.__name__')
        s = s.decode(detect_encoding(s), 'surrogatepass')

【讨论】:

以上是关于winform Load有啥作用的主要内容,如果未能解决你的问题,请参考以下文章

WinForm RichTextBox 常用操作

c#winform tracesource有啥用

wpf和winform(C#) 有啥区别吗

winform与WPF有啥区别

wpf跟winform有啥区别?

c# wpf和winform有啥区别吗?wpf能使用串口吗